嵌套表的最佳查询语法?
Posted
技术标签:
【中文标题】嵌套表的最佳查询语法?【英文标题】:Best query syntax for nested tables? 【发布时间】:2009-01-10 22:30:15 【问题描述】:我的表中有一个名为 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');
这可能吗?我是否为此使用了正确的语法?有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:几乎,但不完全——这是它可以工作的一种方式
$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);
(为了清楚起见,我假设数组不为空,数组元素已被净化等!)
【讨论】:
category_id 是一个数字字段,IN 中不需要引号 是的,错过了他明确说明的情况。已修改。【参考方案2】:你从哪里得到 id 数组?如果它来自数据库,您应该考虑在那里进行所有操作:
SELECT * FROM myTbl WHERE c_id IN (SELECT c_id FROM yourTable WHERE ...);
【讨论】:
谢谢,让事情变得更快【参考方案3】:是的,mysql的语法是这样的:
SELECT * FROM myTbl WHERE category_id IN(1,2,3,4,5,6);
(因为值是整数,所以它们不需要引号。如果它们是字符串,它们每个都需要用自己的引号括起来 - category_id IN ('a', 'b')
【讨论】:
以上是关于嵌套表的最佳查询语法?的主要内容,如果未能解决你的问题,请参考以下文章