我有两个表 tbl_group 和 tbl_members。 这是两个表的快照。
+----+------------+
| id | groupTitle |
+----+------------+
| 1 | Group 1 |
| 2 | Group 2 |
+----+------------+
+----+---------+--------+
| id | groupId | userId |
+----+---------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
+----+---------+--------+
现在我想再创建一个用户 ID 为 3,2 的组,但在此之前我想检查是否有任何组具有相同的成员 3 和 2 而不是任何其他组。
我使用了 IN 子句,但它不起作用。
SELECT DISTINCT groupId
FROM tbl_members
WHERE userId IN (3,2)
虽然结果为空,但它返回了两个组。
最佳答案
我们可以尝试将 INSERT INTO ... SELECT
与 EXISTS
子句一起使用,该子句断言 2/3 的 userId
尚未出现对于任何组。
INSERT INTO tbl_members (groupId, userId)
SELECT groupId, userId
FROM (
SELECT 3 AS groupId, 2 AS userId UNION ALL SELECT 3, 3
) t
WHERE NOT EXISTS (SELECT 1 FROM tbl_members
WHERE userId IN (2, 3)
GROUP BY groupId
HAVING MIN(userId) <> MAX(userId));
您还必须将新记录插入到新组的 tbl_group
表中。
关于mysql - 如何在 Where 子句中使用 IN 查找精确的行匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53845376/