mysql - 从范围的不同区域选择行的 SQL 查询

标签 mysql sql

我有一个带有实体的表entities,它具有唯一索引entity_id

例如,1

我想进行一个sql查询,选择:

  • 如果entity_id < 200,则为 3 个或更少的随机实体,
  • 如果 200 <=entity_id < 400,则为 3 个或更少的随机实体,
  • 如果 400 <=entity_id < 600,则为 3 个或更少的随机实体,
  • 如果 600 <=entity_id < 800,则为 3 个或更少的随机实体
  • 如果 800 <=entity_id,则为 3 个或更少的随机实体

所以,我想要一个查询并从实体范围的每个区域获取实体。如果多一个矿石区域为空也没关系

我不知道如何实现它。

请帮忙

最佳答案

您可以编写一个返回表的函数,并在该函数中首先定义一个包含所需列的表,例如:

DECLARE @ReturnTable TABLE (entity_id INT, column2 INT, etc.)

然后,声明另一个与实体相同但具有随机数列的表。

DECLARE @EntitiesCopy TABLE (entity_id INT, rand INT);

填充 @EntitiesCopy 表,如下所示:

INSERT INTO @EntitiesCopy SELECT *, RAND() FROM entities

然后,编写插入语句,例如:

INSERT INTO @ReturnTable(column1, column2) 
     SELECT TOP 3 * FROM @EntitiesCopy 
       WHERE (entity_id > 1) AND (entity_id < 200) 
       ORDER BY rand

其他条件类似。

那么,

RETURN @ReturnTable

关于mysql - 从范围的不同区域选择行的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26619525/

相关文章:

mysql - 查找特定日期内的数据?

Mysql删除一个表中的id从另一个表中删除

PHP header 重定向在表单提交时不起作用

php - 如何仅存储月份和年份并将所有日期的日期默认设置为 1?

sql - 在 COALESCE 中使用 SELECT

mysql - 如何使用 Laravel 迁移脚本创建 MD5 字段?

sql - 在postgresql有向无环图中有效地找到共同祖先

MySQL在按条件按多列分组时选择行

mysql - 如果行的时间是 5 分钟或比现在更长,则更新 SQL

javascript - MYSQL中如何使用LIMIT和OFFSET进行分页?