从两个MySQL ID列表中选择Distinct Pairs

时间:2015-11-25 17:54:00

标签: mysql select

我有两个不同的表<script> function myFunction() { window.parent.document.getElementById('seekerBase').style.backgroundImage = "url()"; } </script> <button type="button" onclick="myFunction('http://www.floom.com/images/waveform_lotos.gif')">Get the background image of div</button> (1,2,3)

的两个ID列表

我想运行一个(4,5,6)查询,以便我最终使用配对的ID,每个ID只使用一次:

SELECT

有没有办法创建这个1,4 2,5 3,6 查询?

更新,更多信息

我有3个数据库表:

SELECT

我想采用一组特定的**user** id username **prize** id description expiration **user_prize** id user_id prize_id (例如:1,2,3)和一组特定的user.ids(例如:4,5,6)并将它们插入到prize.ids表。我不关心选定的user_prize中的哪一个与所选的user.ids中的哪一个配对。

有关如何运行此prize.ids / INSERT查询的任何建议,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以创建唯一索引来强制执行约束。

create unique index u_user_prize_prize_id on user_prize(prize_id);
create unique index u_user_prize_user_id on user_prize(user_id);

然后使用INSERT ... SELECT尝试IGNORE

insert ignore into user_prize(user_id, prize_id)
select u.id, p.id from user u join prize p;

因此,只会插入1个用户和1个奖品对。

答案 1 :(得分:0)

<强> Sql Fiddle Demo

您使用变量来创建row_id

INSERT INTO user_prize(`id`, `user_id`, `prize_id`)
SELECT U.rank as `id`, u.id as `user_id`, p.id as `prize_id`
FROM 
(
  SELECT u.*, 
       @r1 := @r1 + 1 AS rank
  FROM users u, 
       (SELECT @r1 := 0) r
) U
JOIN 
(
  SELECT p.*, 
       @r2 := @r2 + 1 AS rank
  FROM prize p, 
       (SELECT @r2 := 0) r
) P
ON U.rank = P.rank;