mysql - 子查询返回多于 1 行|是否可以使用 "AND NOT IN"?

标签 mysql sql

SELECT r.rom_ID
    FROM rom r
    WHERE r.rom_ID NOT LIKE(

    SELECT r.rom_ID
    FROM rom r, booking b 
    WHERE b.rom_ID = r.rom_ID 
    and (
         '2018-05-08' BETWEEN b.ankomstdato AND b.utsjekkdato OR
             '2018-05-12' BETWEEN b.ankomstdato AND b.utsjekkdato OR 
             ('2018-05-08' <= b.ankomstdato AND  '2018-05-12' >= b.utsjekkdato
        ) ) )  AND r.romtype_ID = 2
        LIMIT 1;

最佳答案

您可以使用 NOT IN 并避免使用隐式连接...使用显式连接例如:INNER JOIN

SELECT r.rom_ID
FROM rom r
WHERE r.rom_ID NOT IN (

SELECT r.rom_ID
FROM rom r
INNER JOIN  booking b  ON b.rom_ID = r.rom_ID 
and (
     '2018-05-08' BETWEEN b.ankomstdato AND b.utsjekkdato OR
         '2018-05-12' BETWEEN b.ankomstdato AND b.utsjekkdato OR 
         ('2018-05-08' <= b.ankomstdato AND  '2018-05-12' >= b.utsjekkdato
    ) ) )  AND r.romtype_ID = 2
    LIMIT 1;

关于mysql - 子查询返回多于 1 行|是否可以使用 "AND NOT IN"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50192988/

相关文章:

mysql - 多重联接的 on 子句中的未知列

mysql - 有没有办法将这些查询合并为一个?

mysql - 无法删除托管实例上的分发数据库 'distribution'

php - Mysqli查询性能多查询

php - SQL - 我如何在另一个表中使用选定的 ID?

sql - 是否可以在 Hive 的 Spark SQL 中更改列名?

sql - 从sql server中的syscolumns获取varchar(max)的最大长度

mysql - varchar 日期的最大值

mysql - 如何在 MySQL 中生成一组整数

mysql - 1000万行的2gb表,后期分页选择很慢