我有一張字母表。并與稱為“人”的作者和收件人一起表。我想運行一個 SQL 命令,它回傳一個帶有字母的表或行,以及它的作者和收件人。
這是我到目前為止所嘗試的。如果我需要一個帶有字母和作者姓名的表格,我可以使用:
SELECT date, type, description, firstName, lastName
FROM letters
INNER JOIN people ON letters.authorId=people.ROWID
這給了我一個如下表:
1866-12-08 request need of women and children, list of needed supplies, FREEDMEN'S BUREAU A.M.L. Crawford
1867-01-18 request destitution of women and children in state and efforts to help M.H. Cruikshank
如果我需要收件人,我可以將最后一行更改為:
INNER JOIN people ON letters.recipientId=people.ROWID
我想要作者和收件人。但我似乎不能在 JOIN 中選擇多個相同的欄位。
我嘗試過使用以下內容。
SELECT date, type, description, firstName, lastName, firstName, lastName
FROM letters
INNER JOIN people ON letters.authorId=people.ROWID
INNER JOIN people ON letters.recipient=people.ROWID
這會導致錯誤:
Execution finished with errors.
Result: ambiguous column name: firstName
At line 1:
SELECT date, type, description, firstName, lastName, firstName, lastName
FROM letters
INNER JOIN people ON letters.authorId=people.ROWID
INNER JOIN people ON letters.recipient=people.ROWID
uj5u.com熱心網友回復:
當您多次加入同一個表時,就像您顯示發件人和收件人的詳細資訊一樣,您必須為表提供別名。
FROM letters
INNER JOIN people senders ON letters.authorId=senders.ROWID
INNER JOIN people recips ON letters.recipient=recips.ROWID
senders然后,您可以在 SELECT、WHERE和其他子句中提及列,recips就好像它們是單獨的表一樣。
SELECT letter.date, letter.type, letter.description,
sender.firstName, sender.lastName,
recip.firstName, recip.lastName
...
專業提示在使用 JOIN 的查詢中,始終使用表名或別名來限定您提到的每一列。例如,說,letter.description而不是只是description. 它使下一個人更容易理解您的查詢。甚至是你未來的自己。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/525575.html
標籤:sqlsqlite
下一篇:在SQLite中索引混合型別的列
