2016-10-28 55 views
0

我有下面的表: ID,裁判,REF_ID邀请,USER_ID搜索多个值

到目前为止,我的查询看起来是这样的:

SELECT * FROM `log` WHERE `ref` = 'purchased' AND `ref_id` in (117714,117709,139171,117710,134387,117712,118270,117715,124721,139170,117708,127060,131446,131447,117718) 

此查询的工作,但我需要做的是只返回一个结果,如果有一个user_id符合各ref_id

可能用另一种方式来说话,我需要找到是否有user_id购买了每个ref_id值。

回答

0

你可以在MySQL中使用的GROUP_CONCAT函数,是这样的:

select user_id, group_concat(ref_id) from log group by user_id 

这会给你ref_ids每个USER_ID的逗号分隔值的列表。棘手的一点是如何比较你想要的设置。最简单也最冒险的方式(如果你只是偶尔手动运行这个查询)就是要加入一些“包含”比较。喜欢的东西:

select * from (
    select user_id, group_concat(ref_id) as refs from log group by user_id 
) a 
where refs like '%117714%' 
and refs like '%117709%' 
... etc 

您应该GROUP_CONCAT的文件上读了,看看你是否可以得到分组值按字母顺序排列,在这种情况下,您可以订购你的价值观和做类似:

where refs = '111,112,113,114' --numbers in alphabetical order 

希望有帮助!