两个查询合并
问题描述:
我需要合并两个查询:两个查询合并
首先查询:
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。你必须让它们返回相同的列。第二个查询将不得不返回其他值的空白值。
答
我不知道查询试图实现什么,或查询产生什么样的结果。我认为查询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`
)
好了,你可以帮我这个'UNION'?因为我已经尝试了很多方法,查询总是失败。 – Isarius
我认为'UNION'在这种情况下不会起作用,因为'SELECT'语句有不同的列数。 – Isarius