我可以在 MySQL 中将 Distinct 与 Union All 一起使用吗?
Posted
技术标签:
【中文标题】我可以在 MySQL 中将 Distinct 与 Union All 一起使用吗?【英文标题】:Can I use Distinct with Union All in MySQL? 【发布时间】: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 个金额,将选择哪个金额来显示单个记录? 将显示第一个收入金额 “但我希望它在日期上与众不同。” --DISTINCT
是 DISTINCTROW
的同义词,事情就是这样运作的。 "distinct on date" 没有任何意义。当date
字段中有两行或多行具有相同值时,选择哪一行?
将选择最后一行
【参考方案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
【讨论】:
以上是关于我可以在 MySQL 中将 Distinct 与 Union All 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章