繁体   English   中英

在MySQL中选择varchar的最大值

[英]select the max value of varchar in MySQL

我有一个雇员表和说明表,如下所示。

员工表:

empId    empName
================
 1       foo
 2       bar

说明表:

id  description empId
======================
1   test A      1
2   test B      1
3   test C      1
4   test D      2
5   test E      2
6   test F      1

我可以使用以下查询加入并获取每位员工的最新描述:

select e.empId, e.empName, d.description
from employee e
inner join description d on d.id=(select max(id) from description where empId=e.empId)

这将返回所需的结果为

empId        empName    description
===================================
1            foo        test F
2            bar        test E

但是我想知道没有子查询还有没有其他方法可以得到相同的结果。

可以完成涉及GROUP BY的解决方案,尽管它涉及将原始查询包装在另一个选择中。 它避免查询选择最大ID。

SELECT * FROM (
SELECT e.empId, e.empName, d.description
 FROM employee e
 JOIN description d USING (empId)
 ORDER BY e.empId ASC, d.id DESC
) tmp GROUP BY empId

您可以使用主键执行原始查询,该主键涉及临时表,并且可能涉及文件排序,因此它可能不那么有效。

我认为没有子查询就无法做到这一点,但是您可以将其重写为:

select e.empId,
       e.empName,
       (select description from description 
        where empId = e.empId 
        order by id desc limit 1) as description
from employee e
SELECT DISTINCT e.empId, e.empName, d.description FROM employee e JOIN description d USING (empId) join ( SELECT MAX(d.id) as id FROM description d GROUP BY d.empId ) AS maxd ON maxd.id = d.id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM