嵌套表的最佳查询语法?

时间:2009-01-10 22:30:15

标签: sql mysql

我的表中有一个名为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 个答案:

答案 0 :(得分:3)

几乎,但不完全 - 这是一种可行的方式

$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);

(我假设数组不为空,为了清楚起见,数组元素已经过santized等等!)

答案 1 :(得分:2)

你从哪里获得id数组?如果它来自数据库,您应该考虑在那里完成所有操作:

SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...);

答案 2 :(得分:1)

是的,mysql的语法是这样的:

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

(因为值是整数,它们不需要引号。如果它们是字符串,它们每个都需要用自己的引号括起来 - category_id IN('a','b')