Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 仅当特定用户没有代码时才选择代码_Mysql_Sql_Subquery_Having Clause - Fatal编程技术网

Mysql 仅当特定用户没有代码时才选择代码

Mysql 仅当特定用户没有代码时才选择代码,mysql,sql,subquery,having-clause,Mysql,Sql,Subquery,Having Clause,我有一个表,其中包含每个拥有ASIN的用户的ASIN代码条目 示例:列出的项目表: User_id---asin 12--------B078JKTHRL 6---------B078JKTHRL 16--------B078JKTHRL 5---------B078JKTHRL 87--------B078JKTHRL 90--------B078JKTHRL 我想做一个选择,只返回不属于特定用户的ASIN。 当我这样做时: SELECT ASIN FROM listed_items ad

我有一个表,其中包含每个拥有ASIN的用户的ASIN代码条目

示例:列出的项目表:

User_id---asin
12--------B078JKTHRL
6---------B078JKTHRL
16--------B078JKTHRL
5---------B078JKTHRL
87--------B078JKTHRL
90--------B078JKTHRL
我想做一个选择,只返回不属于特定用户的ASIN。 当我这样做时:

SELECT ASIN FROM listed_items ad WHERE user_id NOT IN (5,16,9)
我仍然得到用户16和5拥有的ASIN,因为它当然是从其他用户那里得到的ASIN。我的目标是只为用户5、16和9带来没有条目的ASIN

你能帮我做这个吗? 谢谢

您需要查看具有相同
asin
的行组,这建议聚合:使用
分组依据
;然后,您可以使用具有条件的
实现过滤逻辑。在MySQL中,您可以将其表述为:

select asin 
from listed_items 
group by asin
where max(user_id in (5,16,9)) = 0
这将为asin中的每个
生成一行。如果您想要完整的对应行,那么这是一个完全不同的问题。我建议
不存在

select li.*
from listed_items li
where not exists (
    select 1 
    from listed_items li1 
    where li1.asin = li.asin and li1.user_id in (5,16,9)
)
不在以下位置使用:

SELECT *
FROM listed_items
WHERE `asin` NOT IN(SELECT `asin` FROM listed_items WHERE user_id IN(5,16,9) AND `asin` IS NOT NULL);
条件:
和asin不为空
仅当列
asin
可为空时才需要