我無法弄清楚如何構建SQL查詢。假設我們有一個User
表和一個Pet
表。每個用戶可以有許多寵物,並且Pet
有一個品種欄。使用外連接和限制每個父級子記錄的SQL查詢
User:
id | name
______|________________
1 | Foo
2 | Bar
Pet:
id | owner_id | name | breed |
______|________________|____________|_____________|
1 | 1 | Fido | poodle |
2 | 2 | Fluffy | siamese |
的最終目標是提供一個查詢,會給我所有的寵物在給定where
子句匹配,同時允許使用sort
和limit
參數每個用戶。所以限制每個用戶的寵物說5並按名稱排序的能力。
我正在爲ORM動態構建這些查詢,所以我需要一個在MySQL和Postgresql中工作的解決方案(雖然它可以是兩個不同的查詢)。
我已經試過這樣的事情不工作:
SELECT "user"."id", "user"."name", "pet"."id", "pet"."owner_id", "pet"."name",
"pet"."breed"
FROM "user"
LEFT JOIN "pet" ON "user"."id" = "pet"."owner_id"
WHERE "pet"."id" IN
(SELECT "pet"."id" FROM "pet" WHERE "pet"."breed" = 'poodle' LIMIT 5)
因此,這是你的RDBMS? MySQL或Postgres?究竟是哪個版本? –
這些似乎是引號。 – Strawberry
嗯,這是一個ORM,所以我最終需要一些適用於任何SQL數據庫的東西,但現在我只關注讓MySQL和PostgreSQL工作。相同的查詢不需要用於兩個數據庫。我可以做一個MySQL版本和一個Postgresql版本。至於哪個版本的postgresql或mysql,我會說我可以限制它到最新的穩定版本。 – particlebanana