对这个问题嗤之以鼻,不知道如何解决。我需要从包含用户信息的团队表(不同的值)返回每个团队代码1行。
表用户可以在团队代码上有多个值,但我需要它只返回1(任何一个,它不重要)。我试过了:
SELECT a.teamcode, a.area, c.uniqid, c.fullname, c.email
FROM teams a
LEFT JOIN
(SELECT uniqid, CONCAT(first_name, ' ', last_name ) AS fullname, email, teamcode from users LIMIT 1) c
on a.teamcode = c.teamcode
WHERE a.area= 'ZF15'
我也试过max:
SELECT a.teamcode, a.area, c.uniqid, c.fullname, c.email
FROM teams a
LEFT JOIN
(SELECT max(uniqid) as uniqid, CONCAT(first_name, ' ', last_name ) AS fullname, email, teamcode from users) c
on a.teamcode = c.teamcode
WHERE a.area= 'ZF15'
但是子查询从users表返回空值。但是,当我删除limit和max时,我得到了users表值,但每个团队代码得到多行。有什么想法吗?
答案 0 :(得分:2)
我认为这应该可以,每个团队的max(uniqid)加入用户:
SELECT a.teamcode, a.area,
c.uniqid, CONCAT(c.first_name, ' ', c.last_name ) AS fullname, c.email
FROM teams a
LEFT JOIN (
SELECT MAX(uniqid) maxuniqid, teamcode
FROM users
GROUP BY teamcode
) u on a.teamcode = u.teamcode
LEFT JOIN users c on c.teamcode = u.teamcode
AND c.uniqid = u.maxuniqid
WHERE a.area= 'ZF15'
这从users表中获取max(uniqid),按团队代码分组(每个团队1个)。然后返回到users表以获取该用户的名称和电子邮件。