不使用樞查詢,你也可以使用子查詢加盟,如下:
SELECT t.id, MAX(key_1.value) AS '1', MAX(key_3.value) AS '2'
FROM tb t
INNER JOIN (SELECT id, value FROM tb WHERE `key` = 1) key_1 ON (key_1.id = t.id)
INNER JOIN (SELECT id, value FROM tb WHERE `key` = 3) key_3 ON (key_3.id = t.id)
GROUP BY t.id;
測試用例(在MySQL):
CREATE TABLE tb (`id` int, `key` int, `value` char(2));
INSERT INTO tb VALUES (1, 1, 'ab');
INSERT INTO tb VALUES (1, 2, 'cd');
INSERT INTO tb VALUES (1, 3, 'ef');
INSERT INTO tb VALUES (2, 1, 'gh');
INSERT INTO tb VALUES (2, 2, 'ij');
INSERT INTO tb VALUES (2, 3, 'kl');
結果:
+------+------+------+
| id | 1 | 2 |
+------+------+------+
| 1 | ab | ef |
| 2 | gh | kl |
+------+------+------+
2 rows in set (0.04 sec)
爲什麼ID不是唯一的?這是一個關係表嗎? – mga 2010-05-19 15:43:16
該ID是不同表格的外鍵 – Pmarcoen 2010-05-19 15:44:10
您可能需要的內容通常稱爲數據透視表。但是實現取決於你正在使用的數據庫服務器(因爲答案通常是程序化的,而不僅僅是一個選擇)。 – 2010-05-19 15:44:22