我有两个MySQL表 - 1)用户和2)warehouseMapping。
id,name
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
答案 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;