今天我在写mysql数据库的sql语句时,突然遇到一个让人很疑惑的sql语句,一直搞不明白,特意发出来,想请各位大神帮我看看,直接上图和上代码;
mysql数据库中有2张表,book2024表(书表)和booktype2024表(书类型表);
book2024表(书表)
booktype2024表(书类型表)
如下这条sql语句,大家都可以理解,这没什么好疑惑的
#
SELECT
*
FROM
book2024,
booktype2024
WHERE book2024.bTypeId <> booktype2024.id ;
真正让我疑惑的sql语句是如下3条sql语句:
如下这条sql语句让我很疑惑:
SELECT
*
FROM
book2024,
booktype2024
WHERE booktype2024.id IN (book2024.bTypeId = booktype2024.id);
如下这条sql语句也让我很疑惑:
SELECT
*
FROM
book2024,
booktype2024
WHERE booktype2024.id IN (book2024.bTypeId <> booktype2024.id);
如下这条sql语句也让我很疑惑:
SELECT
*
FROM
book2024,
booktype2024
WHERE booktype2024.id NOT IN (book2024.bTypeId <> booktype2024.id);
下面这几条sql语句,大家都可以理解,应该没什么疑惑:
以下这条sql语句没什么疑惑
SELECT * FROM booktype2024 WHERE booktype2024.id IN (
SELECT book2024.bTypeId FROM book2024 WHERE book2024.bTypeId = booktype2024.id
);
以下这条sql语句没什么疑惑
SELECT * FROM booktype2024 WHERE booktype2024.id NOT IN (
SELECT book2024.bTypeId FROM book2024 WHERE book2024.bTypeId = booktype2024.id
);
以下这条sql语句没什么疑惑
SELECT
*
FROM
book2024,
booktype2024
WHERE booktype2024.id IN (
SELECT book2024.bTypeId FROM book2024, booktype2024 WHERE book2024.bTypeId <> booktype2024.id
);