【问题标题】:MySQL- Select Where second select result is gatheredMySQL-选择第二个选择结果的收集位置
【发布时间】:2013-02-02 23:25:55
【问题描述】:
我有这个问题。第二部分是获取正确的值,但最终的输出数据仍然包括列等于选择值的行。
SELECT *
FROM roomfacilities
WHERE room <> '(SELECT room_assigned
FROM allocation
WHERE booking_id = 01010106)';
我试图让它工作,说 SELECT all from roomfacilities WHERE room 'does not equal' 来自选择的结果。
感谢您的帮助。
【问题讨论】:
标签:
mysql
sql
database
select
【解决方案1】:
当allocation 表中room_assigned 的值为NULL 时,使用LEFT JOIN 可以从表roomfacilities 中获取所有记录。
SELECT a.*
FROM roomfacilities a
LEFT JOIN allocation b
ON a.room = b.room_assigned AND
b.booking_id = 01010106
WHERE b.room_assigned IS NULL
【解决方案2】:
使用NOT IN 谓词:
SELECT *
FROM roomfacilities
WHERE room NOT IN(SELECT room_assigned
FROM allocation
WHERE booking_id = 01010106);
或者:LEFT JOIN:
SELECT f.*
FROM roomfacilities f
LEFT JOIN allocation a ON f.room = a.room_assigned
AND a.booking_id = 01010106
WHERE a.room_assigned IS NULL;