首页新闻找找看学习计划

sql 查询问题

0
悬赏园豆:30 [已解决问题] 解决于 2019-08-17 14:53

表结构如下

chat_id 相同为一组

需要查询组中出 word 同时包含 ['斗牛', '退现'] 或者 ['扑鱼', '可', '金花'] 或者 ['xxxx','xxx','xx','x'] .......... 的 chat_id
有没有大佬知道可以提供点思路, 或者方法

用的是mysql 数据库

贴一个未成功的sql, 我这个只能一组条件的情况有效, 如果多组条件就不行了

SELECT DISTINCT(chat_id) 
FROM cut_chat  
WHERE word in ('六六','44') 
GROUP BY chat_id  
HAVING COUNT(1) >= 2
Mirck的主页 Mirck | 初学一级 | 园豆:134
提问于:2018-09-30 18:01
< >
分享
最佳答案
0

这是games表:

这是脚本:
select t.chat_id,t.word_group
from
(
select chat_id,group_concat(distinct word order by word) word_group
from games
group by chat_id
) t
where instr(t.word_group,'斗牛')
and instr(t.word_group,'退现')
;

收获园豆:15
猪仔95 | 菜鸟二级 |园豆:223 | 2019-01-18 17:49
其他回答(2)
0

SELECT chat_id FROM cut_chat WHERE ( word in ('斗牛','退现') OR word in ('66','44'))
group by chat_id

收获园豆:5
园园家的小胖子 | 园豆:207 (菜鸟二级) | 2018-10-02 15:37

你这个只能保证('斗牛','退现') 中的任意一个, 不能保证两个都出现的

支持(0) 反对(0) Mirck | 园豆:134 (初学一级) | 2018-10-08 16:19
0

select chat_id from cut_chat c where ('斗牛' in (select distinct word from cut_chat c1 where c1.chat_id = c.chat_id) and '退现' in (select distinct word from cut_chat c2 where c2.chat_id = c.chat_id)) or ('六六' in (select distinct word from cut_chat c3 where c3.chat_id = c.chat_id) and '44' in (select distinct word from cut_chat c4 where c4.chat_id = c.chat_id))
还有其它的继续加or,期待更简洁的方法

收获园豆:10
流年飞雨 | 园豆:1923 (小虾三级) | 2018-10-07 21:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册