我觉得我一看到这就会打自己,但这是:
数据:
CREATE TABLE testdata (
id int,
email varchar(25),
street nvarchar(50),
town nvarchar(15),
zip nvarchar(5)
source nvarchar(15))
INSERT INTO testdata (
id,
email,
street,
town,
zip,
source
)
VALUES
(
1,
'myemail@email.com',
null,
'happy',
null
),
(
1,
'myemail@gmail.com',
null,
'happy',
'19400'
);
这将产生:
-------------------------------------------------------------
|id |email |street |town |zip |
|1 |myemail@email.com |happy place |happy |(null) |
|1 |myemail@gmail.com |(null) |happy |19400 |
我想到达的是
|id |email |street |town |zip |
|1 |myemail@email.com |happy place |happy |19400 |
基本上,我想折叠所有行并在ID相同的地方获取不为null的所有内容。如果它们都为空,则获取空值。我尝试通过合并进行自我连接,但是没有用。我感觉好像已经接近了,但是那里有一个我可以使用的函数可以使它变得更容易吗?
注意事项:只能有两个具有相同ID的行(不确定这是否会使它更难或更容易)。而且如果两行都填充了信息,我希望第一行。
答案 0 :(得分:2)
除非您有指定顺序的列,否则表中没有“第一”行。您的表没有这样的列。
因此,您可以做的最好的就是聚合:
gmail.com