【问题标题】:Select rows from a MySQL table where value is an array?从值是数组的 MySQL 表中选择行?
【发布时间】:2011-07-25 00:04:08
【问题描述】:

我有一张包含 ID 列表的表格。我使用查询来选择它,然后将其作为数组获取(我知道如何执行此操作)。然后我想从另一个表中选择行,其中 ID 位于之前获取的数组中。

我该怎么做?提前致谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:
    select value1,value2 from table2 where id in (1,2,3,4,5)
    

    【讨论】:

      【解决方案2】:

      您很可能想要进行WHERE field IN (...) 类型的查询。对于IN 子句中列出的每个值,它基本上等同于WHERE field=X or field=Y or field=Z or ...

      鉴于您已经有了一个 ID 数组,最简单的方法是像这样构建查询:

      $where_in = implode(',', $ids_array);
      
      $query = "SELECT ... FROM yourtable WHERE idfield IN ($where_in);";
      

      适用通常的附带条件 - 小心 SQL 注入漏洞,始终检查查询结果是否失败等...

      【讨论】:

      • 不应该是$query = "SELECT ... FROM yourtable WHERE idfield IN (".$where_in.")";吗?
      • 没有。学习基本的 PHP 语法:php.net/manual/en/…
      【解决方案3】:

      您可以避免这样做并考虑JOIN 表。一个查询将通过 ID 获取匹配的记录。

      举个例子

      SELECT * FROM table1 t1 JOIN table2 t2 ON t1.ID=t2.ID
      

      【讨论】:

        【解决方案4】:

        您可以在一个查询中完成此操作

        类似的东西 SELECT table2.id FROM table2 WHERE table2.id IN (SELECT table1.id FROM table1 WHERE blablabla)

        【讨论】:

          【解决方案5】:

          假设$values是数组,可以使用mysql IN关键字和php implode函数构造查询

          $sql = "SELECT a, b FROM table WHERE id IN (" . implode(", ",$values) . ")";
          

          implode 将使用 ", " 连接数组的元素

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-09-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-01
            相关资源
            最近更新 更多