特定的MySQL查询:将两个MYSQL选择语句与OR结合使用

时间:2012-09-27 18:19:00

标签: mysql select join expressionengine

我需要检查条目是否被分类(查询A)或条目是否与某些数据有关(查询B)。我想用一个查询而不是两个单独的查询来做这个。例如:

[if query A OR query B ]
   <p>Show this content</p>
[/if]

我有两个选择查询正常工作,但只是彼此独立。他们是:

查询A:

SELECT entry_id FROM exp_category_posts WHERE entry_id = '999' AND cat_id IN(SELECT cat_id FROM exp_categories WHERE group_id = '5') LIMIT 1

查询B:

SELECT entry_id FROM exp_matrix_data WHERE field_id = '19' AND col_id_7 <> '' AND entry_id = '999'

同样,我想将这两个查询组合成一个查询,检查条目999是否在某些类别中被分类(查询A)或与某些数据有关系(查询B)。这样做的最佳方式是什么?

如果有帮助,查询将在ExpressionEngine数据库上运行。

免责声明:我知道有很多关于如何组合MySQL SELECT语句的问题,但我正在寻找这个特定查询的帮助,并没有发现任何类似于我自己的问题。如果我无意中激怒了重复的问题上帝,我会提前道歉。

1 个答案:

答案 0 :(得分:2)

由于您的参赛作品来自两个不同的表格,并且据我了解您的要求,它们不一定存在,您需要FULL OUTER JOIN才能使用OR,这在MySQL中不受支持。

但是,您可以使用UNION来获得所需的结果:

SELECT entry_id FROM exp_category_posts WHERE entry_id = '999' AND cat_id IN(SELECT cat_id FROM exp_categories WHERE group_id = '5') LIMIT 1
UNION DISTINCT
SELECT entry_id FROM exp_matrix_data WHERE field_id = '19' AND col_id_7 <> '' AND entry_id = '999'