我有两个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;

10-07 16:50