重写复杂SQL语句的最佳方法?

时间:2011-08-09 22:19:04

标签: php sql

我有以下SQL语句:

mysql_query("SELECT * FROM `friends` WHERE friend1='$username' OR friend2='$username' AND confirmed='1'");

我要完成的是从表friends中删除表中的选择数据,其中两个字段中的一个等于您的用户名,confirmed字段必须等于1。这似乎不起作用。重写它的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

在括号中使用您的朋友条款尝试此操作:

 SELECT * FROM friends 
 WHERE (friend1='$username' OR friend2='$username')
 AND confirmed='1'

这将确保满足您的一个朋友条件。无论哪一个匹配,它还会检查确认的位。如果两个朋友条件都不匹配,则该行不是结果集的一部分。

答案 1 :(得分:0)

也许你的where子句没有以你期望的方式评估条件? 尝试:

mysql_query("SELECT * FROM `friends` WHERE (friend1='$username' OR friend2='$username') AND confirmed='1'");

答案 2 :(得分:0)

以下链接显示了mysql中的运算符优先级,因为您可以看到AND在OR之前被计算,因此您的问题就出现了。

http://dev.mysql.com/doc/refman/4.1/en/operator-precedence.html