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 ;