我有一个包含两列的表,ID和描述。当ID = 1时,描述代表人的姓名。当ID = 2时,描述代表人的地址。当ID为3时,描述代表该人的评论。
我必须做什么查询来选择所有三种类型的描述。我尝试过使用案例但在我的案例中不起作用。联盟将工作,但我将运行我的查询三次。有没有更简单,更有效的方法来做到这一点?
答案 0 :(得分:1)
我猜你有办法将这些数据与另一个表联系起来。如果是这样,那么你可以使用这样的东西:
select t1.someId,
max(case when t2.id = 1 then t2.description end) name,
max(case when t2.id = 2 then t2.description end) address,
max(case when t2.id = 3 then t2.description end) comments
from table1 t1
left join table2 t2
on t1.someId = t2.someid
group by t1.someId
这将为您提供特定行中每条记录的唯一数据。然后,您可以将此数据插入另一个表中。
答案 1 :(得分:1)
这是一种非常糟糕的方法,但它可以通过以下方式解决: (我在表中添加了一个personID作为它的主键)
create table person(
personID int,
id int,
description varchar(40))
insert into person values (1,1, 'name')
insert into person values (1,2, 'adress')
insert into person values (1,3, 'comments')
SELECT p.personID, p.description, p2.description, p3.description
FROM person p JOIN person p2 ON p.personID=p2.personID and p.id=1 and p2.id=2 JOIN person p3 ON p.personID=p3.personID AND p3.ID=3
答案 2 :(得分:0)
这是解决方案。感谢所有给予反馈的人。
select table.ID,
max (case when id = 1 then description end) as size
max (case when id = 2 then description end) as address
max (case when id = 3 then description end) as comments
group by id