使用UNION的多个表上的Mysql num行

时间:2010-08-16 19:07:52

标签: mysql count union

我正在尝试查找两个表的行数: 示例1返回81(这是错误的)。

SELECT p_id FROM j_posts 
INNER JOIN j_blogs ON p_blog_id = b_id && b_approved = 1 
WHERE p_is_draft = 0 
UNION SELECT ep_id FROM j_external_posts 
INNER JOIN j_blogs ON ep_blog_id = b_id && b_approved = 1

然后我尝试将查询分成两部分:

SELECT ep_id FROM j_external_posts INNER JOIN j_blogs ON ep_blog_id = b_id 
&& b_approved = 1

查询的第一部分返回70,第二部分返回39.这是正确的行数。

SELECT p_id FROM j_posts INNER JOIN j_blogs ON p_blog_id = b_id 
&& b_approved = 1 WHERE p_is_draft = 0

在示例1中我做错了什么?它应该返回109而不是81。

提前致谢

2 个答案:

答案 0 :(得分:2)

使用UNION ALL,UNION将返回不同的行

答案 1 :(得分:0)

我认为你必须说“UNION ALL”而不是UNION UNION隐式DISTINCT如此相同的值只显示一次..