MySQL左连接显示重复的行

时间:2018-05-16 08:14:08

标签: mysql

我有两个MySQL表 - 1)用户和2)warehouseMapping。

用户

id,name

warehouseMapping

id,userId,warehouseId

从上面你可以看到“warehouseMapping”表是映射表,它将显示哪个warehouseId与特定用户相关。用户将有多个warehouseId。

SELECT * FROM `users`
LEFT JOIN warehouseMapping
    ON warehouseMapping.userId = users.id
WHERE 1 AND warehouseMapping.warehouseId IN (1, 2)

我的目的是向仓库ID为1和2的用户显示。

提交后,MySQL两次显示相同的用户名。

用户表输入:

id                  name
***************************
1                   Niladri
2                   Tanay

仓库交易表的输入:

id   userId        warehouseId
*****************************
1      1           1
2      1           2
3      1           3
4      2           1
5      2           2

1 个答案:

答案 0 :(得分:3)

如果您想找到同时拥有两个仓库的用户,可以采用以下方式:

SELECT u.id, u.name
FROM users u
LEFT JOIN warehouseMapping w
    ON w.userId = u.id
WHERE w.warehouseId IN (1, 2)
GROUP BY u.id
HAVING COUNT(DISTINCT w.warehouseId) = 2;