これは私のSQLクエリです.2つの列が「下位」と「上位」の単一の結果行を生成します。 Rankableテーブルの行の主キー( "id")に対応します。このSQLクエリは、2つのフィールドではなく2つの行を出力するようにするにはどうすればよいですか?
クエリの目的は、ランク付け可能な行のランダムなペアを選択することです。これは、以前のすべてのペアを含む比較テーブルには存在しません。
しかし、私が必要とするのは、このクエリでは、ランク付け可能IDだけでなく、単一行のフィールドとして2つのRankableを行として返すことです。
これは、現在のクエリです:
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;
あなたのmysqlタグに気付かなかった...私の答えは20秒後に削除されました。それを投稿するが、いくつかの忍者はまだdownvoteを持っていた:D – Matthew
@Matthew PK私はチェックし、MySQLがそれを持っていないことがわかるまで、 – troutinator