mysql查询使用多个OR语句

时间:2014-12-15 11:52:26

标签: php mysql

有没有比这更好的方法?

SELECT * FROM tagcloud 
WHERE (usertag_tag = 1 
OR usertag_tag = 2 
OR usertag_tag = 3    
OR usertag_tag = 4)

如果我想在查询中添加更多标签,我会继续添加OR语句吗?

7 个答案:

答案 0 :(得分:3)

您可以使用简单版本

 SELECT * FROM tagcloud 
WHERE usertag_tag in (1,2,3,4);

希望这有帮助

答案 1 :(得分:0)

您可以使用IN语句:

SELECT * FROM tagcloud WHERE user_tag IN(1,2,3,4)

答案 2 :(得分:0)

喜欢的东西     SELECT * FROM tagcloud     WHERE usertag_tag在(1,2,3,4)中。

答案 3 :(得分:0)

您应准备一份清单并从中进行选择:

$tags = array( 1, 2, 3, 4 );
$query = "SELECT * FROM tagcloud WHERE usertag_tag IN (" . implode( ',', $tags ) . ")";

答案 4 :(得分:0)

IN可以使用,但我想你插入的id是动态的(可以来自另一个表) 所以你可以使用

 SELECT * FROM tagcloud 
 WHERE usertag_tag in (select id from the_other_table)

如果没有那么这没关系

 SELECT * FROM tagcloud 
 WHERE usertag_tag in (1,2,3,4)

答案 5 :(得分:0)

你可以使用这样的数组,

$sql = "SELECT * FROM tagcloud WHERE user_tag IN ";  

$j = 6;

for($i = 0; $i< $j; $i++){
$queryArray[] .= "('". $i. "')";
}

$sql .= implode(',', $queryArray);

只需将j更改为您想要的值。

答案 6 :(得分:0)

使用MySQL IN

SELECT * FROM tagcloud 
WHERE (usertag_tag = 1 
OR usertag_tag = 2 
OR usertag_tag = 3    
OR usertag_tag = 4)

/* You are checking whether usertag_tag is either 1, 2, 3 OR 4*/

相当于:

SELECT * FROM tagcloud 
WHERE (usertag_tag IN (1, 2, 3, 4))
/* You are checking usertag_tag is one of the  values in the array given as 
array(1, 2, 3, 4)
If you want to add more values, just add elements to the array, that is it.
*/

<强>解释

如果我们要比较单个值,我们会使用=

如果我们需要在其中一个值(值数组)中找到包含给定字段的行,我们使用IN

MySQL IN功能在逻辑上与PHP in_array()

相同