需要查询以从另一个表中的多个字段中提取不同的数字列表

时间:2014-05-30 00:12:18

标签: mysql sql

我有下表:

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的数字

2 个答案:

答案 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)
)

如果您不需要joinusers表,那么您可以使用UNION从插槽字段中获取不同的值列表:

SELECT slot1 user FROM tents
UNION
SELECT slot2 user FROM tents
UNION
SELECT slot3 user FROM tents