MySQL-选择收集第二个选择结果的地方

标签 mysql sql database select

我有这个问题。第二部分是获取正确的值,但最终输出数据仍然包括列等于选择值的行。

SELECT * 
FROM roomfacilities 
WHERE room <> '(SELECT room_assigned 
                FROM allocation 
                WHERE booking_id = 01010106)';

我试图让它工作,说 SELECT all from roomfacilities WHERE room 'does not equal' result from select.

感谢您的帮助。

最佳答案

使用 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;

关于MySQL-选择收集第二个选择结果的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14937872/

相关文章:

mysql - order 子句中的未知列

MySQL选择前10%的用户

mysql - SQL时间点转时间范围

sql - 获取时区时间

SQL (DB2) 在单个查询中返回多个条件计数

mysql - MySQL中的case语句

mysql - SQL - 排序依据 "Custom Preference List"

c++ - SQLite 转义字符串 C++

mysql - 数据库设计建议

sql-server - 存储与数据库无关的模式