需要帮助加入两个查询并避免重复

时间:2013-07-03 16:08:59

标签: sql join case informix

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

| 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 |等。| 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 

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果重复是您唯一的问题,快速解决方法就是按ID进行分组。