我有兩個表像這樣:如何從表中隨機選擇唯一的行對?
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的人(因爲該對的順序不相關)。
的事情是,我從來沒有想選擇同一對兩次,所以我需要檢查對錶之前,我回我隨機選擇的對。
是否有可能做到這一點在一個合理的高效和優雅的方式使用只是一個單一的SQL查詢?
(我這樣做是使用Java Persistence API,但希望我能翻譯任何答案爲JPA代碼)
這可能是可行的,但它不會很漂亮。 – Matchu 2011-01-27 23:34:31
我不明白這是如何在基於集合的方法中可能的。我可以使用遊標來解決它(因此可以在單個存儲過程中完成)。最大的障礙是您的選擇池必須減少您添加到對錶中的每個隨機對。 – Matthew 2011-01-27 23:37:02