【问题标题】:Two queries merging两个查询合并
【发布时间】:2011-10-10 05:50:27
【问题描述】:

我需要合并两个查询:

第一个查询:

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}

有没有机会合并它们?

【问题讨论】:

    标签: mysql merge


    【解决方案1】:

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

    【讨论】:

    • 好的,你能帮我解决这个UNION吗?因为我已经尝试了很多方法并且查询总是失败。
    • 我认为UNION 在这种情况下无济于事,因为SELECT 语句的列数不同。
    【解决方案2】:

    我不知道查询要达到什么目的,也不知道查询会产生什么样的结果。我认为查询 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`
     ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-26
      • 2012-09-02
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多