2

在这个问题上敲我的头,不知道如何解决。我需要从包含用户信息的团队表(不同的值)中为每个团队代码返回 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'

但是子查询从用户表返回空值。但是,当我删除限制和最大值时,我得到了用户表的值,但我得到了每个团队代码的多行。有任何想法吗?

4

1 回答 1

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)。然后加入用户表以获取该用户的姓名和电子邮件。

于 2013-04-01T00:41:18.077 回答