两个查询合并

时间:2011-10-10 05:50:28

标签: mysql merge

我需要合并两个查询:

首先查询:

SELECT `p`.`name`, `posts`.*
FROM `polls` `p`, `posts` 
WHERE `p`.`id` = `posts`.`guid` 
AND `first` = {$id} 
AND `text` LIKE ?

with ... second query:

SELECT SUM(`deleted` = 0) AS 'posts'
FROM `posts`
WHERE `first`
NOT IN 
(
SELECT `id` 
FROM `posts` 
WHERE `deleted` = 1 
AND `first` = `id`
) AND `first` = {$fid}

有没有合并它们的机会?

2 个答案:

答案 0 :(得分:0)

您可以使用UNION。你必须让他们返回相同的列。第二个查询必须返回其他所有内容的空白值。

答案 1 :(得分:0)

我不知道查询试图实现什么,或查询产生什么样的结果。我认为查询1搜索文本等帖子,查询2按ID搜索已删除的帖子。我已经完成了一个夹具,如果两个查询生成相同数量的行,它应该可以工作。

的变化: 1您需要将第二个查询中的AS更改为唯一名称(因此,posts_sum)。 2我还删除了第二个ID加入。

检查出来:

 SELECT `p`.`name`, `posts`.*, SUM(`deleted` = 0) AS 'posts_sum'
 FROM `polls` `p`, `posts` 
 WHERE `p`.`id` = `posts`.`guid` 
 AND `first` = {$id} 
 AND `text` LIKE ?
 AND `first`
 NOT IN 
 (
    SELECT `id` 
    FROM `posts` 
    WHERE `deleted` = 1 
    AND `first` = `id`
 )