一列上的SQL多个IN语句

时间:2012-04-25 20:00:24

标签: sql

好的,我正在使用WordPress,但这与SQL方面有关。

我有一个查询,其中我需要使用三个不同的类别过滤掉帖子,但它们都是帖子中的所有条款。

例如:

在我的三个类别中,我选择了以下内容:(Academia,Webdevelopment) (Fulltime,Parttime) (Earlycareer)

现在我想要做的是确保当我查询帖子中至少有一个这些术语时。

正确结果:标记为Academia, Fulltime, Earlycareer

的帖子

错误结果:标记为Academia, Earlycareer的帖子(没有全职或兼职)

目前,我的查询看起来像这样:

SELECT * FROM $wpdb->posts WHERE
(
$wpdb->terms.slug IN (list of selected from category 1) AND
$wpdb->terms.slug IN (list of selected from category 2) AND
$wpdb->terms.slug IN (list of selected from category 3)
)
AND $wpdb->term_taxonomy.taxonomy = 'jobtype' AND .......

使用此查询时,当我选择不同的类别时,它不会返回任何结果(也就是说,我可以从类别1中选择4个并且它有结果,但我不能从类别2或3中选择任何内容。反之亦然)

我不确定这是否与在同一列上多次使用IN有关。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的查询似乎是正确的。关于在相同的列中使用IN,SQL没有任何限制。

但请确保您的list of selected from category 1/2/3查询中没有任何NULL值。即使单个NULL值在这些列表中也会因整个'WHERE'条件而给出NULL,因此您将得不到任何结果。

如果这无济于事,则必须是WordPress问题。