我正在尝试查找ts_request.day_id和ts_request.period_id不等于1且不存在的行。
我该怎么做呢?
我当前的SQL查询看起来正在搜索找到匹配项的行 - 我正在查找匹配不是圆形的行(因为该行不存在)。
SELECT COUNT(*) totalCount FROM ts_room
JOIN ts_roompref
ON ts_room.id = ts_roompref.room_id
JOIN ts_request
ON ts_roompref.request_id = ts_request.roompref_id
WHERE ts_request.day_id = 1
AND ts_request.period_id = 1
答案 0 :(得分:1)
如果该行不存在,则需要将INNER JOIN更改为LEFT OUTER JOIN。因为INNER JOIN的定义是它只返回join-condition计算为true的那些记录。
然后,只获取没有匹配行的记录,在WHERE子句中添加一个或多个条件。
SELECT
COUNT(*) totalCount
FROM
ts_room
JOIN ts_roompref
ON ts_room.id = ts_roompref.room_id
LEFT JOIN ts_request
ON ts_roompref.request_id = ts_request.roompref_id
WHERE
ts_request.day_id IS NULL;
编写上述查询的另一种方法是:
SELECT
COUNT(*) totalCount
FROM
ts_room
JOIN ts_roompref
ON ts_room.id = ts_roompref.room_id
WHERE
NOT EXISTS (
SELECT 1
FROM ts_request
WHERE ts_roompref.request_id = ts_request.roompref_id)
答案 1 :(得分:0)
嗨使用<>是不等于......其中<> 1 理解或了解一个例子