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/