【问题标题】:Get best table row for some specific condition in MySQL获取 MySQL 中某些特定条件的最佳表行
【发布时间】:2021-05-27 10:21:47
【问题描述】:

我想确定适合特定高度(例如 40 厘米、77 厘米、25 厘米)的包裹的最佳表格行。 通常可以在 SQL 中评估类似的内容吗?

示例: 40cm高的包裹最适合1级 77cm高的包裹最适合3级

没有超过99cm的包裹。

我的图层表很简单:

CREATE TABLE `levels` (
 `hall` VARCHAR(1) NOT NULL,
 `row` VARCHAR(2) NOT NULL,
 `level` tinyint(1) NOT NULL,
 `height` float(5,2) NOT NULL
);

INSERT INTO `levels` (`hall`, `row`, `level`, `height`) 
VALUES ('D', '01', 0, 76.00),
       ('D', '01', 1, 41.00),
       ('D', '01', 2, 41.50),
       ('D', '01', 3, 100.00);

https://www.db-fiddle.com/f/eWe8EEvWCpWtjiBA7cKzVW/1

【问题讨论】:

  • 请分享更多细节。您如何确定“最佳”?

标签: mysql


【解决方案1】:

WHERE子句中设置条件,取第一行的最小高度:

SELECT * 
FROM levels
WHERE height >= ? -- or maybe height > ?
ORDER BY height LIMIT 1;

? 替换为您搜索的高度。

请参阅demo

【讨论】:

    【解决方案2】:

    选择最低的拟合高度,看看它属于哪一层(把77换成你要检查的高度):

    SELECT `level`
    FROM `levels`
    WHERE `height` = (SELECT MIN(`height`) FROM `levels` WHERE `height` >= 77);
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多