我有三个表,分别称为表a、表b和表c,这三个表都有一个公共列。如何从三个表中得到共同的最大值?以下是我的表信息:表A
id salary 101 10000 102 15000 103 18000
表b
id salary 110 14000 127 21000 118 15000
表C
id salary 191 15000 192 20000 193 8000
我需要的输出是:
salary 15000
dphi5xsq1#
使用UNION ALL(或UNION)获取所有3个表的薪金,并使用额外的列(如id)标记源表,然后在聚合查询的HAVING子句中检查该薪金是否属于所有表。最后,使用ORDER BY和LIMIT 1来获得最大公共salary:
UNION ALL
UNION
id
HAVING
ORDER BY
LIMIT 1
salary
SELECT salary FROM ( SELECT 1 id, salary FROM tableA UNION ALL SELECT 2 id, salary FROM tableB UNION ALL SELECT 3 id, salary FROM tableC ) t GROUP BY salary HAVING COUNT(DISTINCT id) = 3 -- get only the common salaries ORDER BY salary DESC LIMIT 1;
41zrol4v2#
您可以在数据表之间使用内部链接,以确定您只会考虑所有三个数据表中出现的值。然后使用MAX()来获取这些值中的最大值。
MAX()
SELECT MAX(salary) AS salary FROM tableA JOIN tableB USING (salary) JOIN tableC USING (salary)
2条答案
按热度按时间dphi5xsq1#
使用
UNION ALL
(或UNION
)获取所有3个表的薪金,并使用额外的列(如id
)标记源表,然后在聚合查询的HAVING
子句中检查该薪金是否属于所有表。最后,使用
ORDER BY
和LIMIT 1
来获得最大公共salary
:41zrol4v2#
您可以在数据表之间使用内部链接,以确定您只会考虑所有三个数据表中出现的值。
然后使用
MAX()
来获取这些值中的最大值。