SQL QUERY在WHERE语句中使用OR返回所有结果

时间:2011-03-09 18:49:45

标签: php mysql

希望我在这里错过一些简单的东西:

    $sql = "Select * FROM user_info, user_login WHERE user_login.status = '0' OR user_login.status = '2' AND user_info.uid = user_login.uid";

$db = new connection();
                $results = $db->query($sql);

$user = array();    

while($info = mysql_fetch_array($results))

{

$user[] = $info;

}

$total = count($user);
//TEST the amount of rows returned.
echo $total;

for ($i = 0; $i < $total; $i++)
{

//echo data;
}

只是尝试将user_login.status字段设置为“0”或“2”的所有数据拉出来,但它会显示所有内容并显示标记为2的项目两次。  有人看到我的问题吗?

2 个答案:

答案 0 :(得分:8)

由于缺少括号,您的优先权受到了打击:

SELECT DISTINCT *
FROM user_info, user_login
WHERE (user_login.status = '0' OR user_login.status = '2')
AND user_info.uid = user_login.uid

在没有看到数据的情况下,我不能给出关于重复记录的SELECT DISTINCT以上的数据。

答案 1 :(得分:3)

  

选择* FROM user_info,user_login WHERE(user_login.status ='0'或user_login.status ='2')AND user_info.uid = user_login.uid

优先顺序:)