复杂加入多个id

时间:2013-02-06 21:00:14

标签: mysql sql

我有一张这样的表

id | user_id | code  | type | time
-----------------------------------
2    2         fdsa    r      1358300000
3    2         barf    r      1358311000
4    2         yack    r      1358311220
5    3         surf    r      1358311000
6    3         yooo    r      1358300000
7    4         poot    r      1358311220

我想为每个匹配时间获取用户2和用户3的连锁“代码”列。

我想收到这样的结果集:

code     | time
-------------------------------
fdsayooo   1358300000
barfsurf   1358311000

请注意,没有yackpoot代码,因为查询没有查找用户4。

2 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT功能。试试这个:

SELECT GROUP_CONCAT(code SEPARATOR '') code, time 
FROM tbl 
WHERE user_id in (2, 3)
GROUP BY time
HAVING COUNT(time) = 2;

<强> SQL FIDDLE DEMO

答案 1 :(得分:0)

您要找的是GROUP_CONCAT,但您在问题中遗漏了很多细节,以提供一个很好的例子。这应该让你开始:

SELECT GROUP_CONCAT(code), time 
FROM myTable 
WHERE user_id in (2, 3)
GROUP BY time;

缺少详情:

  1. 是否需要订单?不确定如何使用分组进行排序,需要测试是否为关键
  2. 需要其他领域?如果是这样,您可能最终需要进行子选择或二次查询。
  3. 您是否只想多次获得结果?
  4. 您真的不希望结果列中的值之间没有分隔符(在SEPARATOR ''
  5. 中指定带GROUP_CONCAT的分隔符

    注意:

    1. 如果您想通过其他内容(例如user_idtime)执行此操作,可以向GROUP BY添加更多字段。