从group by中选择1列中的1列

时间:2015-09-24 14:43:58

标签: mysql

我在尝试查询问题时遇到了挑战。

我有一个包含2列的表:

TOPIC_ID& USER_ID,两者都是INTEGER(11)

TOPIC_ID    USER_ID
-- -- --    -------
1           1
1           2

2           10
2           20

3           1
3           10

4           3
4           20

我想要的结果是看两个用户是否已经有一个主题ID,或者是否需要创建一个;

例如,如果我检查USER_ID 1& 2;他们有TOPIC_ID 1; 如果我检查USER_ID 10& 20,他们有TOPIC_ID 2; 如果我检查USER_ID 99& 88,他们没有TOPIC_ID,所以需要创建;

你会如何推荐这个?我带来了以下2个产生结果的查询,但我想知道你的建议。

SELECT      TOPIC_ID
FROM        TOPIC_USERS
GROUP BY    TOPIC_ID
HAVING      MIN(USER_ID) = 1
AND         MAX(USER_ID) = 2;

SELECT      IF(COUNT(*),TU1.TOPIC_ID,0)
FROM        TOPIC_USERS AS TU1
            LEFT JOIN TOPIC_USERS AS TU2 ON (TU1.TOPIC_ID = TU2.TOPIC_ID)
WHERE       TU1.USER_ID = 1
AND         TU2.USER_ID = 2;

感谢您的帮助。

0 个答案:

没有答案