查詢場景:現在的需求是查詢年齡最接近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行,每行乙個整數,為...