gpt4 book ai didi

mysql - 多对一 SQL IN 语句

转载 作者:行者123 更新时间:2023-11-29 01:53:35 24 4
gpt4 key购买 nike

假设我有一个MySQL表read,记录了一个userid和一个articleid,记录了用户阅读了哪些文章。我现在想列出已阅读文章 123 的用户。

我知道以下是不可能的,但它说明了这个想法:

SELECT id
FROM user
WHERE (1,2,3) IN (SELECT articleid FROM `read` WHERE userid=user.id);

这应该检查 123 是否作为 articleid 存在于表 read 用于特定的 userid。这就是我所说的多对一 IN 语句。

有什么东西可以用来解决 SQL 中的这个问题吗?

最佳答案

您可以使用聚合和 having 子句:

SELECT userid
FROM read
WHERE articleid IN (1, 2, 3)
GROUP BY userid
HAVING COUNT(DISTINCT articleid) = 3;

注意:如果 read 中没有重复项,则使用 COUNT(*) 而不是 COUNT(DISTINCT)

关于mysql - 多对一 SQL IN 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com