Sql 嵌套表的最佳查询语法?

Sql 嵌套表的最佳查询语法?,sql,mysql,Sql,Mysql,我的表中有一个名为category\u 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'); SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4

我的表中有一个名为
category\u 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');
SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6');

这可能吗?我是否使用了正确的语法?有没有更好的方法可以做到这一点?

几乎,但不完全-这里有一种方法可以奏效

$ids="'".implode("','",$id_array)."'";
$sql="SELECT * FROM myTbl WHERE category_id IN($ids)";
它应该输出如下内容:

SELECT * FROM myTbl WHERE IN(category_id,'1,2,3,4,5,6');
SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6');
请注意,由于字段是数字字段,因此引号是不必要的,但它是一种有用的代码习惯用法,用于构建带引号字符串的列表。在你的情况下,你可以简化为

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

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

差不多,但不完全-这里有一种方法可以工作

$ids="'".implode("','",$id_array)."'";
$sql="SELECT * FROM myTbl WHERE category_id IN($ids)";
它应该输出如下内容:

SELECT * FROM myTbl WHERE IN(category_id,'1,2,3,4,5,6');
SELECT * FROM myTbl WHERE category_id IN('1', '2', '3', '4', '5', '6');
请注意,由于字段是数字字段,因此引号是不必要的,但它是一种有用的代码习惯用法,用于构建带引号字符串的列表。在你的情况下,你可以简化为

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

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

是的,mysql的语法如下:

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

(因为这些值是整数,所以不需要加引号。如果它们是字符串,则每个值都需要加引号-category_id in('a','b')

是的,mysql的语法如下:

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

因为这些值是int型的,它们不需要引号。如果它们是字符串,它们每个都需要用自己的引号括起来(在‘a’,‘b’中)/yp> 类别id。从哪里可以得到ID数组?如果是来自数据库的话,你应该考虑在那里做:

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

你从哪里得到ID数组?如果它来自数据库,你应该考虑在那里做:

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

category_id是一个数字字段,INyeah中不需要引号,遗漏了他明确说明的内容。Have modified。category_id是一个数字字段,INyeah中不需要引号,遗漏了他明确说明的内容。Have modified。谢谢,让事情变得更快Hanks,让事情变得更快