我有一個包含許多列的“回應”表,其中一些列采用與另一個“答案”表相對應的整數值。這是回應表:
表回應:
name | answer1 | answer2 | answer3
----------------------------------
james foo | 1 | 2 | 3
表格answers_ref:
id | answer
------------
1 | Yes
2 | No
3 | Maybe
所以我希望能夠從 james foo 那里得到答案,結果應該是
name | answer1 | answer2 | answer3
----------------------------------
james foo | Yes | No | Maybe
這是我嘗試過的查詢:
select t1.name, al.answer, al2.answer FROM response t1 LEFT JOIN answers_ref al ON t1.answer1 = al.id LEFT JOIN answers_ref al2 ON t1.answer2 = al2.id;
以上可以得到 2 個答案,但我必須進行第三次連接才能得到 answer3,但是如果我有 10 個答案/列怎么辦?
uj5u.com熱心網友回復:
這個有效。我測驗過:
SELECT r.name,
(SELECT answer FROM answers_ref WHERE id = r.answer1) as answer1,
(SELECT answer FROM answers_ref WHERE id = r.answer2) as answer2,
(SELECT answer FROM answers_ref WHERE id = r.answer3) as answer3
FROM response r
WHERE name = 'James Foo';
uj5u.com熱心網友回復:
你不能用更少的連接來實作這一點。每列都被單獨處理,并且它們不會神奇地在它們之間共享“連接”值。
規則很簡單——每列一個連接,就是這樣。沒有比這更簡單或更短的了。
所以答案是:這是不可能的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346465.html
標籤:mysql
