【问题标题】:How to use OR & AND in WHERE clause in mysql如何在mysql的WHERE子句中使用OR & AND
【发布时间】:2015-04-23 06:39:01
【问题描述】:

我是 Mysql 的新手,并且有一个表,目前我正在获取数据作为

SELECT * FROM tablename WHERE name='$user' AND date='$selecteddate'

现在我想再添加 1 个名为 status_id 的列,我想从中选择值,即 1 或 2

我试过这个查询

 SELECT * FROM tablename WHERE (name='Ankit') AND (date='2015-04-23') AND (status_id='1' OR status_id='2')

但没有成功。

请帮忙。

【问题讨论】:

  • 是否显示任何错误
  • status_id 列的数据类型是什么?
  • 好像查询没问题。你期望什么,你得到什么?
  • 我在 mysql 中试过这个,它给出的错误是“SELECT * FROM karmadetails WHERE (name='Ankit') AND (date='2015-04-23') AND (status_id='2' OR status_id='1') " MySQL 说:文档 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '"SELECT * FROM tablename WHERE (name='Ankit') AND (date='2015-04-23') AND (st' at line 1 附近使用正确的语法
  • 如果您的第一个查询有效?您的第一个查询中$selecteddate 的内容是什么?

标签: php mysql


【解决方案1】:

好吧,你只需要 or 子句所关心的元素在 括号。

顺便说一句,它们不是“需要的”(您可以使用 AND / OR 的优先顺序),但我会说这是提高可读性的最佳方式。

如果 status_id 数据类型是 int,则不需要在 1 和 2 附近使用 ' '

SELECT * 
 FROM tablename 
WHERE name='Ankit' 
AND date='2015-04-23' 
AND (status_id=1 OR status_id=2) 

顺便说一下,在这种情况下,您可以使用 IN 子句

AND status_id in (1, 2)

【讨论】:

    【解决方案2】:

    类似的东西

    "SELECT * FROM tablename 
     WHERE name='Ankit' 
     AND date='2015-04-23' 
     AND (status_id='1' OR status_id='2')";
    

    【讨论】:

      【解决方案3】:

      尝试使用IN

      AND status_id IN (1, 2)
      

      【讨论】:

        猜你喜欢
        • 2020-03-06
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-11
        相关资源
        最近更新 更多