相同类型表上的两种相同类型的查询但不同的输出

时间:2013-09-12 21:20:49

标签: mysql sql

在上一个问题的背景下,我几小时前问过: -

Extracting Multiple Similar Rows For Each Distinct Type Of A Column

一些乐于助人的人给了我一个解决我问题的聪明方法。我在我的数据库表上映射了解决方案,这与我为问题设计的虚拟表几乎相同。但不幸的是,查询在我的原始表上提供了错误的输出。我相信这是一个快速修复,我无法发现它。

一些有用的SO用户给我的解决方案: -

http://sqlfiddle.com/#!2/0472b/1

在我映射解决方案之后: -

http://sqlfiddle.com/#!2/082d9/1

我的表的正确输出是: -

+---+--------------+-------------------------------+--------------+-------------+-----+
| d | Johnny Bravo | August, 27 2013 00:00:00+0000 |     NAB      | Same Amount | 150 |
+---+--------------+-------------------------------+--------------+-------------+-----+
| d | Courage Dog  | August, 27 2013 00:00:00+0000 | Commonwealth | Same Amount | 150 |
+---+--------------+-------------------------------+--------------+-------------+-----+

这个问题更像是一个差异点图像:D

1 个答案:

答案 0 :(得分:1)

当我看到原始解决方案时,我在想“如果第2列和第3列中存在重复,该怎么办”。瞧,这就是问题所在。以下是适用于SQL Fiddle的修订查询:

SELECT ht.*
FROM helper_table ht INNER JOIN
     (SELECT `date`, `amount`
      FROM helper_table ht
      GROUP BY `date`, `amount`
      HAVING  COUNT(distinct `name`) = (SELECT COUNT(DISTINCT `name`) FROM helper_table)
     ) da
     ON ht.`date` = da.`date` AND
        ht.`amount` = da.`amount`;

这仍然假设字段dateamount不包含NULL值(或者,至少NULL值不匹配)。