两个查询合并

问题描述:

我需要合并两个查询:两个查询合并

首先查询:

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

与...第二个查询:

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} 

是否有任何机会,以合并它们?

您可以使用UNION。你必须让它们返回相同的列。第二个查询将不得不返回其他值的空白值。

+0

好了,你可以帮我这个'UNION'?因为我已经尝试了很多方法,查询总是失败。 – Isarius

+0

我认为'UNION'在这种情况下不会起作用,因为'SELECT'语句有不同的列数。 – Isarius

我不知道查询试图实现什么,或查询产生什么样的结果。我认为查询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` 
)