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 ;
When I run this statement it gives me result.
I want it like
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;
I want to select the first row of duplicate columns
You can simplify this like this:
SELECT * FROM master_order
ORDER BY app_id = '' DESC, app_id
LIMIT 1;
But for clarification on how it would've worked if this simplification would not be possible, either this way:
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;
or this:
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;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.