私はこれらのような二つのテーブルがあります。テーブルから一意の行ペアをランダムに選択する方法を教えてください。
CREATE TABLE people (
id INT NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE pairs (
person_a_id INT,
person_b_id INT,
FOREIGN KEY (person_a_id) REFERENCES people(id),
FOREIGN KEY (person_b_id) REFERENCES people(id)
)
を私は人々のテーブルからランダムに人々のペアを選択したい、それらを選択した後、私はペアテーブルにランダムに選択のペアを追加します。 person_a_idは常に、ペアの下位IDを持つ人物を参照します(ペアの順序は関係ないため)。
私は決して同じペアを2回選択したくないので、ランダムに選択したペアを返す前に、ペアテーブルをチェックする必要があります。
これは、合理的に効率的でエレガントな方法で単一のSQLクエリを使用して行うことはできますか?
(私はれるJava Persistence APIを使用して、これをやって、うまくいけば、私はJPAコードにどんな答えを翻訳できるようになります)
これは可能かもしれませんが、それほど美しくはありません。 – Matchu
これは、セットベースのアプローチでこれがどのように可能になるかわかりません。カーソルを使って解決できます(単一のストアドプロシージャで実行できるようになりました)。最大の障害は、ペアテーブルに追加するランダムなペアごとに選択プールが減少しなければならないことです。 – Matthew
これは、MySQLがチェック制約をサポートしていないことが原因です。これは、person_a_id
Thomas