SET @row_number:=0;
SET @db_names:='';
SELECT @row_number:=CASE WHEN @db_names=app_id THEN @row_number+1 ELSE 1 END AS row_number,@db_names:=app_id AS db_names
FROM master_order
ORDER BY app_id ;当我运行这条语句时,它会给出结果。
我想要的是
select *from (SET @row_number:=0;
SET @db_names:='';
SELECT @row_number:=CASE WHEN @db_names=app_id THEN @row_number+1 ELSE 1 END AS row_number,@db_names:=app_id AS db_names
FROM master_order
ORDER BY app_id ) as temp
where row_number = 1;我想选择重复列的第一行
发布于 2014-09-18 20:35:50
您可以将其简化为:
SELECT * FROM master_order
ORDER BY app_id = '' DESC, app_id
LIMIT 1;但是为了澄清它是如何工作的,如果这种简化是不可能的,不管是哪种方式:
SET @row_number:=0;
SET @db_names:='';
select *from (
SELECT @row_number:=CASE WHEN @db_names=app_id THEN @row_number+1 ELSE 1 END AS row_number,@db_names:=app_id AS db_names
FROM master_order
ORDER BY app_id
) as temp
where row_number = 1;或者这样:
select *from (
SELECT @row_number:=CASE WHEN @db_names=app_id THEN @row_number+1 ELSE 1 END AS row_number,@db_names:=app_id AS db_names
FROM master_order
CROSS JOIN (SELECT @row_number := 0, @db_names := '') var_init
ORDER BY app_id
) as temp
where row_number = 1;https://stackoverflow.com/questions/25912548
复制相似问题