Query
列出與表的兩列中的值匹配的 ID
我在 Debian Buster/stable 上使用 SQLite 3.27.2-3。我可以使用其他一些數據庫,但對於我的案例(LuaTeX)來說,低成本的東西似乎是有道理的。
我的案例是我有一個字母(在對應的意義上),它指的是文本中的其他字母。我有一個表格,它是根據文本中的引用自動建構的。
假設桌子看起來像這樣
RowID From To ===== ==== == 2019.06.05 PC SW 2019.06.11 PC SB 2019.06.12 2019.06.15 SB PC 2019.06.22 DO SW
並且它對應於更大表中的一些行,我將其稱為
attachments
.假設有一個縮寫表,看起來像
Abbreviation Name ============ ==== B Bashful D Dopey DO Doc H Happy G Grumpy PC Prince Charming SB Sleeping Beauty S Sleepy SN Sneezy
然後我想要一個表 (
abbreviations
),其中包含在我的短通信列表中出現的縮寫列表。這看起來像Abbreviation Name ============ ==== DO Doc PC Prince Charming SB Sleeping Beauty SW Snow White
類似於下面的查詢的東西大約可以工作。但是當它不匹配時,我也會得到空白輸出。我從 SQLite(或 LuaSQL,準確地說)收到錯誤,所以我想知道這是否是因為空白輸出。
更好(和更簡單)的方法受到讚賞。
SELECT abbreviations.Abbreviation, abbreviations.Name FROM attachments LEFT OUTER JOIN abbreviations ON attachments.`From`=abbreviations.Abbreviation WHERE attachments.RowID IN ('2019.06.05', '2019.06.11', '2019.06.12', '2019.06.15', '2019.06.22') UNION SELECT abbreviations.Abbreviation, abbreviations.Name FROM attachments LEFT OUTER JOIN abbreviations ON attachments.`To`=abbreviations.Abbreviation WHERE attachments.RowID IN ('2019.06.05', '2019.06.11', '2019.06.12', '2019.06.15', '2019.06.22');
SELECT DISTINCT abbreviations.* FROM attachments JOIN abbreviations ON abbreviations.Abbreviation IN (attachments.`To`, attachments.`From`) WHERE attachments.RowID IN ('2019.06.05', '2019.06.11', '2019.06.12', '2019.06.15', '2019.06.22');
?