我需要一种合适的方式来写一个简单的WHERE,AND,OR语句。这个不起作用:
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发布于 2010-09-14 05:48:53
这是一个有效的声明,但我认为问题是OR并没有像你预期的那样被解释。请改用IN语法:
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的表名和列名时才是必需的。
这样做的方式:
WHERE `type` = 'wall_common_text'
OR `type` = 'wall_common_fb'
OR `type`= 'wall_common_tw'
AND `owner_id`='{$iId}' ...is评估为:
WHERE (`type` = 'wall_common_text')
OR (`type` = 'wall_common_fb')
OR (`type`= 'wall_common_tw' AND `owner_id`='{$iId}')发布于 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“
发布于 2010-09-14 05:53:45
使用IN找到了一个很好的解决方案
"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"https://stackoverflow.com/questions/3704648
复制相似问题