首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql select语句

Mysql select语句
EN

Stack Overflow用户
提问于 2010-09-14 05:44:40
回答 3查看 105关注 0票数 0

我需要一种合适的方式来写一个简单的WHERE,AND,OR语句。这个不起作用:

代码语言:javascript
复制
SELECT `content` 
  FROM `bx_wall_events` 
 WHERE `type` = 'wall_common_text' 
    OR `type` = 'wall_common_fb' 
    OR `type`= 'wall_common_tw' 
   AND `owner_id`='{$iId}' 
ORDER BY `date` DESC 
   LIMIT 1
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-14 05:48:53

这是一个有效的声明,但我认为问题是OR并没有像你预期的那样被解释。请改用IN语法:

代码语言:javascript
复制
  SELECT content
    FROM bx_wall_events
   WHERE `type` IN ('wall_common_text', 'wall_common_fb', 'wall_common_tw')
     AND `owner_id` = '{$iId}' 
ORDER BY `date` DESC 
   LIMIT 1

我删除了某些位置上的反标记,因为它们只在转义使用MySQL reserved keywords的表名和列名时才是必需的。

这样做的方式:

代码语言:javascript
复制
WHERE `type` = 'wall_common_text' 
   OR `type` = 'wall_common_fb' 
   OR `type`= 'wall_common_tw' 
  AND `owner_id`='{$iId}' 

...is评估为:

代码语言:javascript
复制
WHERE (`type` = 'wall_common_text')
   OR (`type` = 'wall_common_fb')
   OR (`type`= 'wall_common_tw' AND `owner_id`='{$iId}')
票数 5
EN

Stack Overflow用户

发布于 2010-09-14 05:48:01

"SELECT content FROM bx_wall_events WHERE ((type= 'wall_common_text') || (type= 'wall_common_fb') || (type= 'wall_common_tw')) AND owner_id='{$iId}‘ORDER BY date DESC LIMIT 1“

票数 0
EN

Stack Overflow用户

发布于 2010-09-14 05:53:45

使用IN找到了一个很好的解决方案

代码语言:javascript
复制
"SELECT `content` 
FROM `bx_wall_events` 
WHERE `owner_id`='{$iId}' 
AND `type`
IN ('wall_common_text', 'wall_common_fb', 'wall_common_tw') 
ORDER BY `date` 
DESC LIMIT 1"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3704648

复制
相关文章

相似问题

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