gpt4 book ai didi

mysql - LEFT JOIN with NULL, NOT EQUAL 它们都显示出意想不到的结果

转载 作者:行者123 更新时间:2023-11-29 05:03:16 25 4
gpt4 key购买 nike

震惊!以下代码有什么问题? LEFT JOINNULL 都没有选择 Null 行,MYSQL != 运算符也没有只显示不匹配的行

两个表

book - 书籍列表

id  |   ttl
===========
1 | Science
2 | Math
3 | English

block_book - 分配给每个 block 的书籍列表

id  |   block|  book
=====================
1 | 1 | 1
2 | 1 | 2

现在,要求显示未分配给 block 的其余书籍。那我怎么办

SELECT
book.id AS id, book.ttl AS book
FROM
block_book
JOIN
book ON book.id != block_book.book
GROUP BY book.id

使用 != 运算符,它应该遵循结果,不是吗?因为只有主题 English 不在表 block_book

预期结果

id  |   book
===========
3 | English

但是所有的书都被选中了。 当前结果

id  |   book
===========
1 | Science
2 | Math
3 | English

我尝试使用 Left JOINNull

SELECT
book.id AS id, book.ttl AS book
FROM
block_book
LEFT JOIN
book ON book.id = block_book.book
WHERE block_book.book IS NULL

但它什么也没返回

SQL Fiddle

最佳答案

您应该使用右连接

所以这应该可行:

SELECT
book.id AS id, book.ttl AS book
FROM
block_book
RIGHT JOIN
book ON book.id = block_book.book
WHERE block_book.book IS NULL

或者如果你想使用left join,你应该这样写查询:

SELECT
book.id AS id, book.ttl AS book
FROM
book
LEFT JOIN
block_book ON book.id = block_book.book
WHERE block_book.book IS NULL

关于mysql - LEFT JOIN with NULL, NOT EQUAL 它们都显示出意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53789657/

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