Select

只有同一張表的兩行在同一個ID下整體滿足條件時才SELECT rows from table

  • December 27, 2021

標題有點奇怪,但我不太確定如何正確地表述這個問題。也許這就是為什麼我找不到解決方案…?

我目前正在通過具有以下格式的 SQLite 數據庫進行爬網:

直覺地說,假設目標是找出是否有人在這裡公開了他們的完整登錄資訊。這意味著對於相同的文件名和 ID,有人同時定義了使用者名變數和密碼變數,這很糟糕,我們希望通過查看其餘行並嘗試辨識這是哪個軟體來更仔細地分析.

在 SQL 術語中,我的目標是找到一個 SQL 查詢,它返回文件名 + ID 組合的所有行,如果在此組合下有一行名稱包含“USER”(LIKE ‘%USER%’),並且名稱包含“PASS”的行(LIKE ‘%PASS%’)。

對於同一個例子,這就是我想要的結果:

我怎麼能在 SQLite 兼容的查詢中做到這一點?

  1. 查找具有的 id+filenamepasswords
  2. 查找具有的 id+filenameusernames
  3. passwordss與原始表進行內連接,過濾掉那些在and中沒有對應值的行usernames

這些方面的東西:

with passwords as (
 select filename, id from files
 where name like '%PASS%'
 group by filename, id
),
usernames as (
 select filename, id from files
 where name like '%USER%'
 group by filename, id
)
select files.* from files
inner join passwords using(filename, id)
inner join usernames using(filename, id);

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