【发布时间】:2020-11-20 20:31:22
【问题描述】:
我在 PHPMYADMIN 环境中工作。我的目标是从互联网上下载数据,这些数据描述了法官、他们工作的地区、他们所做的文件、决定的数量、他们的薪水以及我上传到我的数据库中的类似内容。我创建了 5 个数据库,每个数据库都代表一个特定的地区(国家的一部分)。例如,现在我的目标是找到做出最多判决的法官。使用此命令:
SELECT ID_sudca
, Rozhodnutia
FROM sudy_sk.informacie
UNION
SELECT id_sudcu
, rozhodnutie
FROM nabozny1.sudca
UNION
SELECT SUDCA_ID
, POCET_ROZHODNUTI
FROM `ke-sud-neznik`.`sudca`
UNION SELECT `ID_sudca`, `Rozhodnutia`
FROM `gerboc`.`sudcovia`
UNION
SELECT `ID_SUDCU`, `Rozhodnutia`
FROM `biz`.`sudcovia`;`
我将创建一个查找表,其中所有的法官都加载在judge_id(它是一个唯一的数字,象征着每个法官)和决定的数量下,也就是说,就像我把所有的法官和他们的号码都放在这个查找中一样表,用 表示。我现在的目标是从所有地区(5 个数据库)中找出所有信息,例如,我会考虑第一个问题,即决策数量最多/最少的法官。我想使用 MAX() 函数,但有必要(至少我认为是这样)与提到的显示一起使用它。但不幸的是我做不到。你不能帮我吗?或者有什么想法?
使用您的第一个显示器,它会显示一些输出,但此输出不正确。值的顺序并不像你看到的那样正确。
select id_sudca, rozhodnutia from sudy_sk.informacie
union select id_sudcu, rozhodnutie from nabozny1.sudca
union select sudca_id, pocet_rozhodnuti from `ke-sud-neznik`.sudca
union select id_sudca, rozhodnutia from gerboc.sudcovia
union select id_sudcu, rozhodnutia from biz.sudcovia
order by rozhodnutia;
有趣的是,我尝试了相同的视图,只是更改了表格的名称,以找出 2018 年法官薪水最高的人(按 desc 排序),这里正确显示给我,但是当我发现听证会不再,我从为什么会这样想。有什么想法吗?
select id_sudca, plat_2018 from sudy_sk.enrichment_platy union select id_sudcu, prijem_2018 from nabozny1.m_priznania union select id_priznania, prijmy_za_rok_2018 from putrovec.majetkove_priznania order by plat_2018;
我已经知道错误出在哪里了,这个select union的条件不满足:
列还必须具有相似的数据类型
【问题讨论】:
-
“我创建了 5 个数据库” - 为什么?即使有充分的理由,使用相同的结构不是更明智吗?您无法使用聚合函数找到“全部”信息。
-
你的意思是什么结构?
-
在表/列标识符中包含数学运算符是一个灾难性的坏主意
标签: mysql sql sql-order-by union sql-limit