在toptal.com上,我发现了这个问题,他们提供了以下解决方案:
SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X
有人可以在这里解释X和Y的用法吗?这些变量是?它是否也在MySQL中以这种方式工作?我似乎无法在测试服务器上运行此类查询。
此外,他们提出以下要求:
关键是AND a!= X部分。这为您提供了UNION(a.k.a.,UNION DISTINCT)命令的好处,同时避免了大部分性能损失。
但如果这是真的,为什么有人会使用UNION DISTINCT?特别是,为什么不用这种假设更有效的方式来实现呢?
答案 0 :(得分:1)
x只是“真实”过滤器的伪代码中的占位符。您可能知道字段a是唯一可能在联合的两端都重复的字段,但查询优化器可能不会,因此以这种方式进行联合会更加性能友好。该答案仅适用于某些情况,具体取决于数据的背景。
这不是一个写得很好的问题。
答案 1 :(得分:0)
您可以在WHERE子句中使用OR,如下所示:
tsc