MySQL LIMIT 1返回空值

时间:2013-04-01 00:35:34

标签: mysql

对这个问题嗤之以鼻,不知道如何解决。我需要从包含用户信息的团队表(不同的值)返回每个团队代码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表值,但每个团队代码得到多行。有什么想法吗?

1 个答案:

答案 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表以获取该用户的名称和电子邮件。