强制 MySQL 从 WHERE IN 子句返回重复项而不使用 JOIN/UNION?
这可能不是很明智,但如果 WHERE IN
子句中存在重复的条件,我想让 MySQL 返回精确的重复行。这可能吗?
举个例子:
SELECT
columns
FROM
table
WHERE
id IN( 1, 2, 3, 4, 5, 1, 2, 5, 5)
我希望 MySQL 返回 id 为 5 的行三次,id 为 1 和 2 的行两次,id 为 3 和 4 的行一次。
由于 IN
参数的长度以及重复计数(一次、两次、三次等)是任意的,我不想依赖 UNION或<代码>加入。否则这样的事情可能吗?
This might not be very sensible, but I'ld like to let MySQL return me the exact duplicate rows if there are duplicate criteria in the WHERE IN
clause. Is this possible?
Take this example:
SELECT
columns
FROM
table
WHERE
id IN( 1, 2, 3, 4, 5, 1, 2, 5, 5)
I'ld like MySQL to return me rows with id 5 three times, id's 1 and 2 twice, and 3 and 4 once.
As the lenght of the IN
arguments, as well as the duplicate count (once, twice, three times, etc.), will be arbitrary I don't want to rely on UNION
or JOIN
. Is something like this possible otherwise?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道你为什么要禁止 JOIN,因为它对 SQL 相当重要。这就像禁止函数式语言中的函数调用一样。
解决此问题的一个好方法是创建一个结果集,其中包含要返回的 id 并与其连接。这是一种方法:
不知道你是否考虑过这种方法?它不存在您似乎担心的任何问题。
如果您禁止联接,则除非您使用存储过程,否则您将无法执行此操作,我认为这比联接更糟糕。
I'm not sure why you want to ban JOIN as its fairly essential to SQL. It's like banning function calls in a functional language.
A good way to solve this is to create a result set containing the ids you want to return and join with it. Here's one way to do it:
I'm not sure if you have considered this method? It has none of the problems that you seem to be afraid of.
If you ban joins you can't do this unless you use a stored procedure, which I'd say is worse than joining.