我有两个MySQL表-1)用户和2)WarehouseMapping。
使用者
身份证,姓名
仓库映射
ID,用户ID,仓库ID
从上面可以看到,“ 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
WarehouseMapping表的输入:
id userId warehouseId
*****************************
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
最佳答案
如果要查找同时拥有两个仓库的用户,这是一种方法:
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;