如何解决如何获取必须与 SQL IN 匹配的最小给定 id 的记录?
我有桌子:
用户:
id | name
1 | first name
2 | second name
3 | third name
4 | fourth name
项目:
id | name
1 | first
2 | second
项目邀请对象:
id | userId | projectId
1 | 1 | 1
2 | 2 | 1
3 | 2 | 2
4 | 3 | 1
我想要这样的记录: 必须具有最小受让人 userId 为 1 和 userId 为 2 的项目
我试过了:
select projectId from projectInvitees where userId IN (1,2);
但它返回 projectId 1 和 2,因为我使用 IN 但正如我提到的我想要唯一的 projectId 1
有人可以指导我吗
解决方法
此变体可能对您有所帮助。对于更改需要用户计数只需更改 HAVING
语句中的参数。
SELECT projectid
FROM projectinvitees
WHERE userId IN (1,2)
GROUP BY projectid
HAVING count (*) >= 2
,
您可以使用这样的查询:
SELECT distinct projectId
FROM projectInvitees
WHERE userId IN (1,2)
GROUP BY projectId
HAVING count(*) = 2;
示例
MariaDB [Kazoku]> SELECT * from projectInvitees;
+----+--------+-----------+
| id | userId | projectId |
+----+--------+-----------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| 4 | 3 | 1 |
+----+--------+-----------+
4 rows in set (0.02 sec)
MariaDB [Kazoku]> select distinct projectId
-> from projectInvitees
-> WHERE userId IN (1,2)
-> GROUP BY projectId
-> HAVING count(*) = 2;
+-----------+
| projectId |
+-----------+
| 1 |
+-----------+
1 row in set (0.00 sec)
MariaDB [Kazoku]>
,
这是您需要的吗?
SELECT
min(projectid) projectid
FROM
projectinvitees
WHERE
userid IN (
1,2
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。