SQL使用子查询结果与NOT IN

时间:2020-06-14 21:12:59

标签: php mysql sql

我可以想象这个问题以某种方式存在,但是我没有找到我想要的东西。

我需要从主查询中获得的结果中删除找到的值。

请考虑以下内容:

mainquery:

    SELECT idTable
    FROM tblTables
    WHERE NOT IN idTables = ( **SUBQUERY HERE** )
          AND dtSeats >= 4
    LIMIT 1;

子查询:

    SELECT idTable
        FROM tblTables,tblReservation
        WHERE tblTables.idTable = tblReservation.fiTable
        AND fiTime = 1
        AND dtResDate = "2020-06-16"

在tblTables中有idTable和dtSeats。

在tblReservation中是fiTime和dtResDate。

子查询最多可以包含三行。 我需要获得尽可能少的座位的第一张免费桌子。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

拥有DDL和一些示例数据会有所帮助,但是我认为您正在寻找的是NOT EXISTS子句。它返回外部查询中与内部查询中的记录不匹配的所有内容。

SELECT idTable
FROM tblTables tt
WHERE NOT EXISTS (
    SELECT NULL FROM tblReservation tr WHERE tt.idTable = tr.idTable AND  
        tr.dtResDate = '2020-06-16'
)
AND dtSeats >= 4
ORDER BY tt.dtSeats
LIMIT 1