我有以下表格:
Table ROWS ( **RowId**, Title)
Table CELLS ( **CellId**, RowId, Title)
Table ERRORS ( **ErrorId**, CellId, Title )
Run Code Online (Sandbox Code Playgroud)
因此行可以有单元格,单元格可能有错误.
如何编写检索单元格没有错误的行的查询?
我知道这样的事情会起作用,但我想知道是否可以以更有效的方式完成:
QUERY1
SELECT ROWS.RowID FROM ROWS
JOIN CELLS ON ROWS.RowId = CELLS.RowID
JOIN ERRORS ON ERRORS.CellId = CELLS.CellId
Run Code Online (Sandbox Code Playgroud)
QUERY2
SELECT * FROM ROWS
WHERE ROWS.RowId NOT IN ( QUERY1 )**
Run Code Online (Sandbox Code Playgroud)
有关如何以更有效的方式做到这一点的任何想法?
尝试:
1)
SELECT R.RowID
FROM ROWS R LEFT JOIN
(
SELECT DISTINCT RowID
FROM CELLS JOIN ERRORS
ON ERRORS.CellId = CELLS.CellId
) C ON R.RowId = C .RowID
WHERE C.RowID IS NULL
Run Code Online (Sandbox Code Playgroud)
2)或
SELECT ROWS.RowID
FROM ROWS JOIN CELLS
ON ROWS.RowId = CELLS.RowID
WHERE NOT EXISTS
(
SELECT 1
FROM ERRORS
WHERE ERRORS.CellId = CELLS.CellId
)
Run Code Online (Sandbox Code Playgroud)