這是我的SQL查詢,它產生一個單獨的結果行,有兩列「下」和「更高」。這些對應於Rankable表中行的主鍵(「id」)。如何獲得此SQL查詢以輸出兩行而不是兩個字段?
該查詢的目的是選擇一個隨機的一對Rankable行,它不在比較表中(它包含所有先前的對)。
但是,我需要的是這個查詢將兩個Rankable作爲行返回,而不僅僅是單行中的可排序ID作爲字段。
這是當前查詢:
SELECT a.id AS lower, b.id AS higher
FROM Rankable a
INNER JOIN Rankable b on a.id < b.id
WHERE
a.category_id = ? AND b.category_id = ?
AND NOT EXISTS (
SELECT *
FROM Comparison c
WHERE c.lower_id in (a.id, b.id))
AND NOT EXISTS (
SELECT *
FROM Comparison c
WHERE c.higher_id IN (a.id, b.id))
ORDER BY a.id * rand()
LIMIT 1;
對不起'PIVOT'建議..我沒有注意到你的mysql標記...刪除我的答案像20秒後r發佈它,但一些忍者仍然得到一個downvote在:D – Matthew
@Mthethew PK我幾乎發佈解決方案使用'WITH'直到我檢查,發現在MySQL沒有它。 – troutinator