首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写复杂SQL语句的最佳方法?

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

Stack Overflow用户
提问于 2011-08-10 06:19:04
回答 3查看 80关注 0票数 0

我有以下SQL语句:

代码语言:javascript
复制
mysql_query("SELECT * FROM `friends` WHERE friend1='$username' OR friend2='$username' AND confirmed='1'");

我正在尝试完成的是从表friends中删除select数据,其中两个字段中的一个等于您的用户名,而confirmed字段必须等于1。重写它的最好方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-10 06:20:43

尝试用括号中的friend子句:

代码语言:javascript
复制
 SELECT * FROM friends 
 WHERE (friend1='$username' OR friend2='$username')
 AND confirmed='1'

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

票数 2
EN

Stack Overflow用户

发布于 2011-08-10 06:22:09

也许你的where子句没有按照你期望的方式计算条件?尝试:

代码语言:javascript
复制
mysql_query("SELECT * FROM `friends` WHERE (friend1='$username' OR friend2='$username') AND confirmed='1'");
票数 0
EN

Stack Overflow用户

发布于 2011-08-12 01:44:04

下面的链接显示了mysql中运算符的优先级,正如您所看到的,AND在OR之前被计算,这就是您的问题所在。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7003731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档