簡體   English   中英

MySQL多條選擇語句

[英]mysql select statement from multiple statement

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;

我想選擇重復列的第一行

您可以這樣簡化:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM