Sqlite
SQL 查詢:如果一行包含特定值,則忽略所有具有相同數據標識符的行
我有這張桌子
process_io_table
:我想獲取沒有在輸出列中找到輸入值的行的 process_names 的不同列表。在此範例中,我希望返回
process_name
“AVA”,因為 AVA 輸入行不包含輸出列中的值。另一方面,VSC 不會被包括在內,因為它有一行在輸出列 (AVA_RESULT
) 中有一個輸入。我嘗試了一些類似的東西
SELECT DISTINCT io.process_name FROM process_io_table io WHERE io.input NOT IN (SELECT io.output FROM process_io_table io)
但是,這仍然會返回 AVA 和 VSC,因為 VSC 有一行輸入不在輸出表 (VSC_IN1) 中。
如何獲取在輸出列中沒有輸入值的任何行的 process_names?
更新:我想在回答的人的幫助下,我想通了:
SELECT DISTINCT R.process_name FROM process_io_table as R WHERE R.process_name NOT IN( -- Gets process_names NOT IN the list of process_names I don't want SELECT DISTINCT t1.process_name FROM R t1 WHERE EXISTS ( -- finds the process_names I DON'T want SELECT 1 FROM R t2 WHERE t1.input= t2.output )
您快到了。
SELECT DISTINCT io.process_name FROM process_io_table io1 WHERE NOT EXISTS ( SELECT 1 FROM process_io_table io2 WHERE io1.input = io2.output )