繁体   English   中英

如何为记录计数做 ceil 并将此数字用作 sql 中的偏移量

[英]how to do ceil for count of the records and use this number as offset in sql

am new t sql 并试图解决这个问题: 从数据库中获取中值

我最初尝试按LAT_N对表进行排序,然后用中间值进行偏移,中间值将是记录数除以二的上限。 所以为此我尝试了:

select round(LAT_N,4)
from STATION
order by LAT_N desc
limit 1
offset ceil ((select count(LAT_N) from STATION)/2)

但出现以下错误:

第 1 行的错误 1064 (42000):您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本对应的手册,了解在第 6 行的“((select count(LAT_N) from STATION)/2)”附近使用的正确语法

我想知道如何将 ceil 检索为数字以将其用于偏移? 我做错什么了?

ciel() 不是 MySQL function 并且不可能使用子查询作为偏移量(很遗憾)

你需要(似乎)使用动态 sql 来让它工作,例如

SET @table_name:='information_schema.columns';

set @offset := (select cast(count(*)/2 as unsigned) from information_schema.columns);

SET @sql:=CONCAT('SELECT * FROM ',@table_name, ' order by column_name limit 1 offset ',@offset);

select @sql;

PREPARE dynamic_statement FROM @sql;
EXECUTE dynamic_statement;
DEALLOCATE PREPARE dynamic_statement;

请注意,您可以放置 /2 并将该值转换为该子查询内的无符号 integer 以计算中点。

在这里看到一个工作的数据库<>小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM