【问题标题】:Multiple OR Clauses in MySQLMySQL 中的多个 OR 子句
【发布时间】:2010-06-13 02:54:14
【问题描述】:

我正在尝试获取 id = 3 OR id = 9 OR id = 100 的内容...请记住,我可以拥有数百个这样的 id。

编写查询最有效的方法是什么?

$sql = "SELECT name FROM artists WHERE (id=3 OR id=9 OR .... id-100)"

【问题讨论】:

    标签: sql mysql database


    【解决方案1】:
      ....
    WHERE id IN (3, 9, 100, ...)
    

    【讨论】:

    • 在某些时候,将 id 插入临时表并对其进行连接可能会更容易。但当然,这需要测试以确定有多少 id 才能使表创建开销值得。
    • 用子查询代替临时表怎么样? ... WHERE id IN (SELECT id FROM ...)
    【解决方案2】:

    您可能想要使用IN() 函数:

    ... WHERE id IN (3, 9, 100);
    

    IN() 函数语法:

    expr IN (value,...)

    检查一个值是否在一组值内 ...

    如果expr 等于IN 列表中的任何值,则返回1,否则返回0

    【讨论】:

      【解决方案3】:
      SELECT * FROM table WHERE id IN (1, 2, 3 etc)
      

      并且只调用你需要的列而不是使用*

      【讨论】:

        【解决方案4】:

        你可以使用 SQL IN 条件

        SELECT * FROM table WHERE ID IN ('1', '2', '3', '4');
        

        【讨论】:

          【解决方案5】:
          SELECT * FROM table WHERE id IN (1,2,5)
          

          【讨论】:

            【解决方案6】:
            SELECT * FROM table WHERE id IN (1,2,5);
            

            【讨论】:

              【解决方案7】:

              $sql = "SELECT name FROM Artists WHERE id REGEXP regex-pattern"

              【讨论】:

              • -1... 如果索引存在并假设正则表达式模式可以更有效(如范围),则效率低下,这不是给定的(即不在帖子中)。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-11-15
              • 1970-01-01
              相关资源
              最近更新 更多