mysql查詢最接近的記錄

2021-08-08 03:36:14 字數 618 閱讀 7608

查詢場景:現在的需求是查詢年齡最接近20歲的使用者,獲取前5個

我現在的資料庫記錄使用者年齡的字段記錄格式是"1995-05-20",欄位名稱birthday

解決思路:

1.首先查詢時轉換成使用者年齡

日期格式轉年齡的方法:

(1)當前年份 - 日期格式中的年份

date_format(now(), '%y') - from_unixtime(unix_timestamp(birthday), '%y')
(2)當前年份 - 日期格式中的年份(獲取方法不同)

date_format(now(), '%y') - year(birthday)
2.通過order by asb() 排序獲取最接近的資料

完整的語句:

select

(date_format(now(), '%y') - year(birthday)) as age

from

user

where

is_anchor = 1

order by abs(20 - age)

limit 0,5

數字的最接近查詢

提出問題,有乙個數字列value,任意輸入乙個數字x,要求查詢最接近x的那個value的值,有可能個大於x也有可能小於x。例如查詢value最接近2.15的value所在的行 實現 create table t value decimal 12,4 insert into t select 2.1 ...

查詢最接近的元素

總時間限制 1000ms 記憶體限制 65536kb 描述在乙個非降序列中,查詢與給定值最接近的元素。輸入第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數...

查詢最接近的元素

在乙個非降序列中,查詢與給定值最接近的元素。input 第一行包含乙個整數n,為非降序列長度。1 n 100000。第二行包含n個整數,為非降序列各元素。所有元素的大小均在0 1,000,000,000之間。第三行包含乙個整數m,為要詢問的給定值個數。1 m 10000。接下來m行,每行乙個整數,為...