兩個表中有客戶(公司)和聯系人。聯系人和客戶都有自己的欄位。但他們都有一個作為primaryKey的id。此外,客戶和聯系人之間存在“鏈接”——每個客戶都可以分配一個聯系人,反之亦然。為此還有第三個表,稱為“assignment”,它只有兩個欄位 - 公司 ID 和聯系人 ID。
假設我們已經將一個 ID 為 3 的聯系人鏈接到一個 ID 為 12076 的公司。接下來,我們將一個 ID 為 10 的聯系人鏈接到一個 ID 為 5 的聯系人。檢查我們的結果:
SELECT contactId FROM assignment WHERE companyId = 12076;
結果是正確的——

在這些步驟之后,有時我需要獲取與我需要的公司相關聯的聯系人欄位。有一家公司 12076,我需要獲取與之關聯的所有聯系人欄位。我提出了這樣的要求:
SELECT id, fullName FROM contacts WHERE contacts.rowid IN (SELECT contactId FROM assignment WHERE companyId = 12076);
此請求顯示我需要的聯系人及其欄位。正好 3 個聯系人,但有一個問題 - 它們按排序順序顯示,按 id 排序。

我需要按添加順序顯示聯系人欄位。我怎么能做到這一點?也許我需要使用加入?
uj5u.com熱心網友回復:
默認情況下,SQLite 表有一個 Rowid 列。我們可以在 ORDER BY 中使用該列。如果我們希望 ContactId 按照它們插入到聯系人表中的順序排列,我們可以加入聯系人并按其 R??owid 排序。
見 [https://www.sqlitetutorial.net/sqlite-autoincrement/][1]
create table companies(id int); create table contacts (id int); create table assignment(companyId int,contactId int); insert into companies values(12076); insert into contacts values(10),(3),(5); insert into assignment values (12076,3),(12076,10),(12076,5);
SELECT a.contactId FROM assignment a JOIN contacts c on a.contactId = c.id WHERE companyId = 12076 order by c.Rowid;
| 聯系方式 | | --------: | | 10 | | 3 | | 5 |
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/471131.html
上一篇:大量OpenGLglDebugOutputShaderStats/ShaderCompiler/Other/帶有mesaradeon的通知嚴重性訊息
