[英]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.