对于这个MySQL SELECT语句:
SELECT * FROM MY_TABLE WHERE ID IN(x,y,y,z):
我想要返回4行 - 即我想在列表中传递重复ID的情况下进行行复制。
这可能吗?
答案 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 指定要搜索的值(并且复制是与设置冲突的概念)。
您应该使用其他手段来达到您的范围。