代码之家  ›  专栏  ›  技术社区  ›  Ali

嵌套表的最佳查询语法?

  •  1
  • Ali  · 技术社区  · 16 年前

    我有一个叫做 category_id 在我的桌子上。我想做这样的事。

    $ids=implode(',',$id_array);
    $sql="SELECT * FROM myTbl WHERE IN(category_id,'$ids')";
    

    它应该输出如下内容:

    SELECT * FROM myTbl WHERE IN(category_id,'1,2,3,4,5,6');
    

    这可能吗?我是否使用了正确的语法?有更好的方法吗?

    3 回复  |  直到 13 年前
        1
  •  2
  •   PEZ    16 年前

    从何处获取ID数组?如果它来自数据库,那么您应该考虑在那里执行所有操作:

    SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...);
    
        2
  •  3
  •   Paul Dixon    16 年前

    差不多,但不完全是-这是一种可行的方法

    $ids="'".implode("','",$id_array)."'";
    $sql="SELECT * FROM myTbl WHERE category_id IN($ids)";
    

    它应该输出如下内容:

    SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6');
    

    注意,由于字段是数字的,所以引号是不必要的,但它是一种有用的代码习惯用法,用于构建带引号字符串的列表。在您的情况下,您可以简化为

    $ids=implode(',',$id_array);
    

    (我假设数组不是空的,为了清晰起见,数组元素被分类等等!)

        3
  •  1
  •   benlumley    16 年前

    是的,mysql的语法是:

    SELECT * FROM myTbl WHERE category_id IN(1,2,3,4,5,6);
    

    (因为这些值是整数,所以不需要引号。如果它们是字符串,则每个字符串都需要用自己的引号括起来-category_id in(“a”、“b”)。