当匹配到column_1时,如果column_1的计数大于1,我正在尝试创建一个合并列的列,如果是1,则只创建其中一列的值。到目前为止,我可以将列添加到正确合并,但它只返回第一行,而不是全部返回。
示例表
id, col_1, col_2, col_3
---------------------------
1, 'Name1', 'Value', '1',
2, 'Name2', 'Value', '2',
3, 'Name2', 'Value', '3',
4, 'Name3', 'Value2', '1',
5, 'Name2', 'Value3', '1';
我想要的回复
2, Name2, Value 2
3, Name2, Value 3
5, Name2, Value3
到目前为止我的尝试
SELECT id,
IF (count(col_2) > 1, concat(col_2, ' ', col_3), col_2) as merge
FROM mytable
where col_1 = 'Name2'
仅返回'2,Value 2'感谢您的帮助。我在http://sqlfiddle.com/#!2/9ce7e/7
时搞砸了答案 0 :(得分:1)
试试这个
select t.id, t.col_1,
IF (t2.cnt > 1, concat(t.col_2, ' ', t.col_3), t.col_2) as merge
from mytable t
inner join
(
SELECT col_1, col_2, count(*) as cnt
From myTable
where col_1 = 'Name2'
group by col_1, col_2
) t2 on t2.col_1 = t.col_1 and t2.col_2 = t.col_2
输出
ID COL_1 MERGE
2 Name2 Value 2
3 Name2 Value 3
5 Name2 Value3
当我在问题中使用小提琴链接时,这很有用。
答案 1 :(得分:0)
count()
是一个聚合函数,因此它返回单行作为输出。
您可以在连接
之前使用以下查询以确保col_2
具有某些值
SELECT id,
IF (col_2 <> "" , concat(col_2, ' ', col_3), col_2) as merge
FROM mytable
where col_1 = 'Name2'