0

我试图减少这个查询。所以我要稍微简化一下。这是我想要的数据:

|person.id|badge.bid|person.first_name|person.last_name|person.type|person_user.description|

每个字段都是唯一的,除了 person_user.description。每条记录最多可以有 40 个不同的 person_user.description 字段。问题是,我得到了重复,因为记录有多个描述条目。你能帮我把那些额外的重复放在同一个记录行上吗,比如:

|person.id|badge.bid|person.first_name|person.last_name|person.type|1|2|3|4|5|etc..|40|

这是查询:

SELECT person.id, 
       badge.bid, 
       person.first_name, 
       person.last_name, 
       person.type, 
       person_user.description 
FROM   person, 
       badge, 
       person_user 
WHERE  person.id = badge.id 
       AND person.id = person_user.person_id 
       AND badge.bid NOT LIKE "111%" 
       AND badge.access_date >= 20130401 
GROUP  BY person.id, 
          badge.bid, 
          person.first_name, 
          person.last_name, 
          person.type, 
          person_user.description 
ORDER  BY person.id 
4

2 回答 2

0

您可以创建一个标量表,使用 INSERT INTO SELECT 和 UNION 填充它,然后从标量表中执行 SELECT DISTINCT。

例如:

DECLARE @temptable table (col1 int, col2 int, etc...)

INSERT INTO @temptable

SELECT col1, col2
FROM table1
WHERE condition=TRUE

UNION

SELECT col1, col2
FROM table2
WHERE condition=TRUE

SELECT DISTINCT col1, col2
FROM @temptable
于 2013-07-03T16:17:54.457 回答
0

如果重复是您唯一的问题,那么快速解决方法就是按 id 分组。

于 2013-07-03T16:37:14.303 回答