查询:
SELECT * FROM #__content WHERE featured=1 and catid=$category_id or catid IN
( SELECT id FROM #__categories WHERE parent_id=$category_id )
Featured=1
仅在 catid=$category_id
处有效。开始这个 catid IN 的地方
( SELECT id FROM #__categories WHERE parent_id=$category_id )
输出所有行并且 featured=1 在这个地方被忽略。如何在 catid IN
中添加 featured=1
条件?
现在基本上它看起来像这样:
$query = "SELECT * FROM #__content WHERE featured=1 and catid=$category_id";
$query2 = "SELECT * FROM #__content WHERE catid IN
( SELECT id FROM #__categories WHERE parent_id=$category_id )";
最佳答案
您需要添加括号以强制执行您需要的评估顺序:
SELECT * FROM #__content WHERE catid=$category_id OR (featured=1 AND catid IN
( SELECT id FROM #__categories WHERE parent_id=$category_id ))
由于 AND
的优先级高于 OR
,当 (featured=1 and catid=$category_id)
时,不带括号的表达式为真为真,或者 catid
在子查询指定的 IN
列表中。
关于mysql - 在查询中添加条件到 `IN`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14397763/