假设我有两张桌子。一个有头发颜色和用户ID。
TABLE A:
USER_ID HAIR_COLOR
1 black
2 black
2 black
3 blonde
...
另一个有USER_ID和NAME:
TABLE B:
USER_ID NAME
1 John
2 Jane
3 Sally
我希望在一个命令中获得所有拥有金发的用户的列表。问题是,我也只想要在表A中重复的用户。
我是SQL的新手,但我相信你可以获得所有带有金发女郎的用户的所有user_id:
SELECT
user_id
FROM
A
GROUP BY
user_id, hair_color
HAVING
COUNT(*) > 1
但是我迷失了如何通过表B将user_id列表转换为实际名称。想法?
(这是一个微不足道的MWE,我意识到有更好的格式化数据库的方法。)
答案 0 :(得分:1)
看起来您可以使用子查询轻松扩展查询:
SELECT
user_id, (SELECT name FROM B WHERE B.user_id = A.user_id)
FROM
A
GROUP BY
user_id, hair_color
HAVING
COUNT(*) > 1
答案 1 :(得分:1)
试试这个(扩展您的查询):
SELECT B.user_id, B.name
FROM B
WHERE B.user_id IN
( SELECT
user_id
FROM
A
GROUP BY
user_id, hair_color
HAVING
COUNT(*) > 1
)