【问题标题】:How can I select the closest value in SQL,but only when that value is bigger?如何在 SQL 中选择最接近的值,但仅当该值较大时?
【发布时间】:2019-12-16 16:00:38
【问题描述】:

我有下表中的一些数据:

+----+--------+--------+--------+-------+ 
| id | length | weight | height | width |
+----+--------+--------+--------+-------+
| 1  | 10     | 45     | 80     | 20    |
+----+--------+--------+--------+-------+
| 2  | 30     | 55     | 70     | 32    |
+----+--------+--------+--------+-------+
| 3  | 30     | 65     | 80     | 21    |
+----+--------+--------+--------+-------+

我想选择最接近长度和高度的值,但它必须大于我指定的值。例如,如果我在输入中写:

1)Length=20 and height=68 it should return id=2
2)Length=20 and height=71 it should return id=3

我已经尝试过(例如第一种情况),但出现语法错误:

SELECT TOP 1 * FROM `elements` ORDER BY length-20 AND height-68

我该怎么做?

【问题讨论】:

    标签: mysql sql sql-order-by closest


    【解决方案1】:

    使用WHERE 子句仅返回具有“更大”值的行。

    SELECT *
    FROM `elements`
    where Length >= 20 and height >= 68
    ORDER BY length + height
    LIMIT 1
    

    ORDER BY 将首先对长度 + 高度较小的行进行排序。使用LIMIT 1 选择最小的。

    【讨论】:

    • 这对我不起作用。我正在使用 phpMyAdmin,但出现语法错误,我不知道为什么。此外,当我执行语句时,它会在末尾添加:'LIMIT 0, 25'。如果我不写“Top 1”,它会起作用,但它会返回很多行,但是当我写“Top 1”时,会出现语法错误
    • 现在是 MySQL 语法。
    【解决方案2】:

    使用where

    SELECT TOP (1) e.*
    FROM elements e
    WHERE length >= 20 AND height >= 20
    ORDER BY length * height;
    

    您没有具体说明“亲近”的含义。这会使用整个区域。

    【讨论】:

    • 这对我不起作用。我正在使用 phpMyAdmin,但出现语法错误,我不知道为什么。此外,当我执行语句时,它会在末尾添加:'LIMIT 0, 25'。如果我不写“Top 1”,它会起作用,但它会返回很多行,但是当我写“Top 1”时,会出现语法错误
    【解决方案3】:

    例如,length 的重要性是 height 两倍的版本。

    SELECT TOP 1 * 
    FROM myTable
    where Length >= 20 and height >= 68
    ORDER BY 2*(length-20) + (height-68)
    

    【讨论】:

      【解决方案4】:

      我不知道为什么,但“TOP 1”对我不起作用。我终于解决了这样的问题

      SELECT * FROM `elements`
      WHERE Length >= 20 and height >= 68
      ORDER BY length + height 
      LIMIT 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-20
        • 1970-01-01
        • 2022-11-13
        • 2019-01-06
        • 2014-11-12
        • 2016-07-24
        相关资源
        最近更新 更多