【问题标题】: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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2019-09-06
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 2021-04-01
        相关资源
        最近更新 更多