簡體   English   中英

SQL查詢-基於子查詢的限制

[英]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參數永遠不能是用戶定義的變量 如上所述,您的選擇將使用以下任一方法:

  1. 准備好的陳述

     PREPARE stmt FROM ' select * from my_table where flagged=1 order by 21_day_probability limit ? '; EXECUTE stmt USING @v1; DEALLOCATE PREPARE stmt; 
  2. 存儲程序中的參數/局部變量:

     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.

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