[英]SQL query - limit based on subquery
我試圖獲取標志字段等於1的條目的上半部分。我嘗試使用變量來保存極限值,如下所示
set @v1:=(select ceil(count(*)/2) as top_half from my_table
where flagged=1);
select * from my_table where flagged=1 order by 21_day_probability limit @v1;
但這是行不通的。 有什么建議么?
謝謝
如SELECT
語法所述:
LIMIT
子句可用於約束SELECT
語句返回的行數。LIMIT
接受一個或兩個數字參數,這兩個參數都必須是非負整數常量,但以下情況除外:
在准備好的語句中,可以使用
?
指定LIMIT
參數?
占位符標記。在存儲的程序中,可以使用整數值的例程參數或局部變量來指定
LIMIT
參數。
因此, LIMIT
參數永遠不能是用戶定義的變量 。 如上所述,您的選擇將使用以下任一方法:
准備好的陳述
PREPARE stmt FROM ' select * from my_table where flagged=1 order by 21_day_probability limit ? '; EXECUTE stmt USING @v1; DEALLOCATE PREPARE stmt;
存儲程序中的參數/局部變量:
CREATE PROCEDURE foo(_l INT) select * from my_table where flagged=1 order by 21_day_probability limit _l ; CALL foo(@v1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.