希望这很有意义,对此很不好。
这是问题所在:我正在尝试从“文章”表中获取帖子列表,并且每篇文章在另一个名为“ article_category_reference”的表中均具有与之相关联的标签列表。
用户会阻止某些标签以自定义其供稿,因此我想将它们过滤掉。这些将位于一个数组中((12和19是标签ID)):
$in = [0 => 12, 1 => 19];
这是当前的示例MySQL:
SELECT a.`article_id`,
a.`title`,
a.`text`
FROM `articles` a
LEFT JOIN `article_category_reference` r
ON r.article_id = a.article_id
WHERE r.category_id NOT IN ( ?,? )
ORDER BY a.`date` DESC
LIMIT ?, ?
我的问题是,如果文章只有一个标签,它将过滤掉文章,因此我完全错了。我想我不能简单地加入像这样的表进行过滤?
答案 0 :(得分:1)
您可以执行嵌套查询。在MySQL上非常有用
SELECT a.`article_id`,
a.`title`,
a.`text`
FROM `articles` a
WHERE a.article_id IN (
SELECT r.`article_id`
FROM `article_category_reference` r
WHERE r.category_id NOT IN ( ?,? )
);
简单来说,请转到article_category_reference获取所有ID,但使用这些ID来查询商品表。
答案 1 :(得分:-1)
您可以简单地使用逗号分隔的要过滤的值列表来构建查询,即:
WHERE r.category_id NOT IN ( 12, 19 )
我不明白那部分,但是你说的是
如果文章只有一个标签,它将过滤掉
也许您可以显示一个完整的示例,其中包含查询,示例数据,获得的结果以及如果此操作不能回答您的问题,则期望的结果。