Mysql 是的,很抱歉,我正在寻找与我要求的最接近的匹配项。因此,如果我请求251,并且数据库中有300和200,我理想情况下希望得到300.0字符串,这很聪明!!!!!谢谢,我将使用它并与PHP进行比较。不需要使用min函数,您只需按abs值宽度减去请求的尺寸进行

Mysql 是的,很抱歉,我正在寻找与我要求的最接近的匹配项。因此,如果我请求251,并且数据库中有300和200,我理想情况下希望得到300.0字符串,这很聪明!!!!!谢谢,我将使用它并与PHP进行比较。不需要使用min函数,您只需按abs值宽度减去请求的尺寸进行,mysql,sql,database,database-schema,Mysql,Sql,Database,Database Schema,是的,很抱歉,我正在寻找与我要求的最接近的匹配项。因此,如果我请求251,并且数据库中有300和200,我理想情况下希望得到300.0字符串,这很聪明!!!!!谢谢,我将使用它并与PHP进行比较。不需要使用min函数,您只需按abs值宽度减去请求的尺寸进行排序,然后取前1。当然,在整个数据集中输入数据并通过php运行会更快。虽然更复杂,但如果在width上有一个索引,它的性能会更好。虽然更复杂,但如果在width上有一个索引,它的性能会更好。 700x394 400x200 300x


是的,很抱歉,我正在寻找与我要求的最接近的匹配项。因此,如果我请求251,并且数据库中有300和200,我理想情况下希望得到300.0字符串,这很聪明!!!!!谢谢,我将使用它并与PHP进行比较。不需要使用min函数,您只需按abs值宽度减去请求的尺寸进行排序,然后取前1。当然,在整个数据集中输入数据并通过php运行会更快。虽然更复杂,但如果在
width
上有一个索引,它的性能会更好。虽然更复杂,但如果在
width
上有一个索引,它的性能会更好。
  700x394
  400x200
  300x169
  150xx84
select * from images
WHERE width >= 750
order by width asc
limit 1
IFNULL(((width >= height AND width >= $length ) OR (width <= height AND height >= $length )), TRUE)
SELECT * 
FROM images
ORDER BY ABS(width-750) ASC
LIMIT 1
SELECT id, width, height
FROM
( ( SELECT id, height, width, 750-width AS diff
    FROM images
    WHERE width < 750
    ORDER BY width DESC
      LIMIT 1
  ) 
  UNION ALL
  ( SELECT id, height, width, width-750 AS diff
    FROM images
    WHERE width >= 750
    ORDER BY width ASC
      LIMIT 1
  ) 
) AS tmp
ORDER BY diff asc
LIMIT 1 ;