Sqlite

SQL 查詢:如果一行包含特定值,則忽略所有具有相同數據標識符的行

  • July 18, 2022

我有這張桌子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
)

引用自:https://dba.stackexchange.com/questions/314550