【问题标题】:Can I use Distinct with Union All in MySQL?我可以在 MySQL 中将 Distinct 与 Union All 一起使用吗?
【发布时间】:2017-09-18 10:51:19
【问题描述】:

我正在使用UNION ALL 从不同的表中获取值。 我的代码如下。

SELECT DISTINCT datei, amount FROM
(
    SELECT datei, amount, 1 AS identification FROM income
    UNION ALL
    SELECT datee, amount, 2 AS identification FROM expense
    UNION ALL
    SELECT date, amount, 3 AS identification FROM others
) t
ORDER BY `datei` ASC

但我希望它是 distinct 日期。 那么我该怎么做呢? 提前致谢。

【问题讨论】:

  • 对于 2 个相同的日期将有 2 个金额,将选择哪个金额来显示单个记录?
  • 将显示第一个收入金额
  • “但我希望它在日期上与众不同。” -- DISTINCTDISTINCTROW 的同义词,事情就是这样运作的。 "distinct on date" 没有任何意义。当date 字段中有两行或多行具有相同值时,选择哪一行?
  • 将选择最后一行

标签: php mysql mysqli union-all


【解决方案1】:

要获取日期的单笔金额,您可以使用以下查询

SELECT  datei,SUBSTRING_INDEX(GROUP_CONCAT(amount),',',1) amount
FROM (
    SELECT datei,amount, 1 AS identification FROM income
    UNION ALL
    SELECT datee,amount, 2 AS identification FROM expense
    UNION ALL
    SELECT DATE,amount, 3 AS identification FROM others
) t
GROUP BY datei
ORDER BY `datei` ASC

【讨论】:

    【解决方案2】:
    SELECT datei, sum(amount)
    FROM
    (
        SELECT datei, amount, 1 AS identification FROM income
        UNION ALL
        SELECT datee, amount, 2 AS identification FROM expense
        UNION ALL
        SELECT date, amount, 3 AS identification FROM others
    ) t
    GROUP BY datei
    ORDER BY datei ASC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 2020-08-04
      • 2020-12-30
      • 2019-12-28
      • 1970-01-01
      相关资源
      最近更新 更多