MySQL - 比较where子句中的多个变量的更好语法

时间:2011-11-05 14:00:17

标签: mysql

我的查询如下:

SELECT * FROM table WHERE id1 = id2 and id2 = id3 and id3 = id4 and id4 = id5

这有效,但如果有更多的ID,它会变得复杂。有没有办法缩短这个? 谢谢。

1 个答案:

答案 0 :(得分:3)

SELECT * FROM table 
WHERE (id1 | id2 | id3 | id4 | id5) = id1 
  AND (id1 & id2 & id3 & id4 & id5) = id1 

|是按位或
&是按位和 ^是按位xor

另一种选择是:

SELECT * FROM table 
WHERE ((id1 ^ id2) | (id3 ^ id4) | (id4 ^ id1) | (id5 & id1)) = 0

请参阅:http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html