我有下表:
tent slot1 slot2 slot3
1 5 11 2
2 8 16 4
3 1 3 12
我需要一个插槽中所有数字的列表,因此结果如下:
user_id
1
2
3
4
5
8
11
12
16
我试过了:
SELECT DISTINCT u.user_id
FROM users u
LEFT JOIN tents t ON t.slot1 = u.user_id
AND t.slot2 = u.user_id
AND t.slot3 = u.user_id
ORDER BY u.user_id_id ASC
但它似乎只给了我slot1的数字
答案 0 :(得分:3)
听起来你真的是指OR而不是AND?并且您希望INNER联接仅显示匹配。
SELECT DISTINCT u.user_id
FROM users u
INNER JOIN tents t ON t.slot1 = u.user_id
OR t.slot2 = u.user_id
OR t.slot3 = u.user_id
ORDER BY u.user_id ASC
答案 1 :(得分:3)
您需要使用EXISTS
:
SELECT user_id
FROM users u
WHERE EXISTS (
SELECT 1
FROM tents
WHERE u.user_id IN (slot1,slot2,slot3)
)
如果您不需要join
到users
表,那么您可以使用UNION
从插槽字段中获取不同的值列表:
SELECT slot1 user FROM tents
UNION
SELECT slot2 user FROM tents
UNION
SELECT slot3 user FROM tents