这可能不是很明智,但是如果WHERE IN子句中有重复的条件,我想让MySQL返回完全相同的重复行。这可能吗?
WHERE IN
举个例子:
SELECT columns FROM table WHERE id IN( 1, 2, 3, 4, 5, 1, 2, 5, 5)
我想让MySQL向我返回ID为5的行3次,ID为1和2的行两次,以及3和4的行。
由于IN参数的长度以及重复计数(一次,两次,三次等)将是任意的,我不想依赖UNIONor JOIN。这样是否可能呢?
IN
UNION
JOIN
我不确定为什么要禁止JOIN,因为JOIN对于SQL来说是相当重要的。这就像禁止使用功能语言进行函数调用一样。
解决此问题的一种好方法是创建一个包含要返回的ID的结果集并与之结合。这是一种实现方法:
SELECT Table1.* FROM Table1 JOIN (SELECT 1 AS id UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 5 UNION ALL SELECT 5) AS T1 ON Table1.id = T1.id
我不确定您是否考虑过这种方法?它没有您似乎担心的问题。
如果您禁止加入,除非使用存储过程,否则您将无法执行此操作,我想说这比加入更糟。