select avg(A.年齡)
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。
from
(select name as 姓名,(year(getdate())-year(出生日期)) as 年齡 from [表名] ) A
假設(shè)表student有如下字段:id,name,age,dormitory(宿舍號(hào)),語(yǔ)句可以如下寫
select?*?from?student?where?age(
select?max(t.age)?from?(
select?avg(age)?age?from?student?group?by?dormitory
)?t
)
這個(gè)語(yǔ)句是我隨手寫的,沒(méi)經(jīng)過(guò)數(shù)據(jù)庫(kù)驗(yàn)證,你自己先看一下,需要修改的地方自己稍加改動(dòng)就行,大致差不多這樣的
mysql中年齡可以用agetinyint表示。根據(jù)查詢相關(guān)公開(kāi)信息顯示:在mysql中表示人的年齡就可以用:agetinyint,表示表示烏龜?shù)哪挲g就要用:agewgsmallint。
假如你有一個(gè)表, SQL CREATE TABLE test_tab (2 id INT, 3 name VARCHAR(10), 4 age INT, 5 val VARCHAR(10)6 );你的業(yè)務(wù),有一個(gè)查詢,是 SELECT * FROM test_tab WHERE name = 一個(gè)外部輸入的數(shù)據(jù) 剛開(kāi)始,數(shù)據(jù)不多的時(shí)候,執(zhí)行效果還不錯(cuò)。 隨著數(shù)據(jù)量的增加,這個(gè)查詢,執(zhí)行起來(lái),越來(lái)越慢了。 然后在 name 上面 建立了索引 CREATE INDEX idx_test4_name ON test_tab (name ); 這樣, 可以加快前面那個(gè)查詢的速度。 但是,某天,你執(zhí)行了下面這個(gè)SQL, 發(fā)現(xiàn)速度又慢了 SELECT * FROM test_tab WHERE age = 25 為啥呢? 因?yàn)?age 字段上面,沒(méi)有索引 索引只在 name 上面有 換句話說(shuō), 也就是 WHERE 里面的條件, 會(huì)自動(dòng)判斷,有沒(méi)有 可用的索引,如果有, 該不該用。 多列索引,就是一個(gè)索引,包含了2個(gè)字段。 例如:CREATE INDEX idx_test_name_age ON test_tab (name, age);那么SELECT * FROM test_tabWHEREname LIKE '張%' AND age = 25 這樣的查詢,將能夠使用上面的索引。 多列索引,還有一個(gè)可用的情況就是, 某些情況下,可能查詢,只訪問(wèn)索引就足夠了, 不需要再訪問(wèn)表了。例如:SELECTAVG( avg ) AS 平均年齡FROMtest_tabWHEREname LIKE '張%' 這個(gè)時(shí)候, name 與 age 都包含在索引里面。 查詢不需要去檢索表中的數(shù)據(jù)。