在MySql中,如何在列表中传递重复ID的情况下获得行重复?

时间:2009-09-14 17:39:31

标签: sql mysql

对于这个MySQL SELECT语句:

SELECT * FROM MY_TABLE WHERE ID IN(x,y,y,z):

我想要返回4行 - 即我想在列表中传递重复ID的情况下进行行复制。

这可能吗?

4 个答案:

答案 0 :(得分:4)

使用IN()构造,这是不可能的。

我能想到的唯一方法是使用UNION:

SELECT * FROM my_table WHERE id = x
UNION ALL
SELECT * FROM my_table WHERE id = y
UNION ALL
SELECT * FROM my_table WHERE id = y
UNION ALL
SELECT * FROM my_table WHERE id = z

但是老实说,我会像你一样做IN(),并根据需要让你的应用代码复制行。

答案 1 :(得分:4)

将您的ID(包括重复项)放入临时表中,并将结果加入该表。连接将负责过滤,但如果它在临时表中两次

将保留重复

答案 2 :(得分:0)

SELECT * FROM MY_TABLE WHERE ID IN(x,y,z)
union all 
SELECT * FROM MY_TABLE WHERE ID IN(y)

答案 3 :(得分:0)

对我而言, IN 指定要搜索的(并且复制是与设置冲突的概念)。

您应该使用其他手段来达到您的范围。