Mysql高階查詢

2021-06-28 13:27:15 字數 3185 閱讀 9793

if(expr1,expr2,expr3)

如果 expr1 是true ,則 if()的返回值為expr2; 否則返回值則為 expr3。如

select if(status >= 0 and status_promotion = 1, 1, 2) as status from my_table;

ifnull(expr1,expr2)

假如expr1 不為 null,則 ifnull() 的返回值為 expr1; 否則其返回值為 expr2。

nullif(expr1,expr2)

如果expr1 = expr2  成立,那麼返回值為null,否則返回值為 expr1。

case

when expression then 操作1

when expression then 操作2

.......

else 操作n

endcase expression

when expression值1 then 操作1

when expression值2 then 操作2

.......

else 操作n

end

注意:null和0是等同的,0和'0'是不同的。

concat(str1,str2,…)

返回結果為連線引數產生的字串。如有任何乙個引數為null ,則返回值為 null。

select concat(id,title,url) from my_table limit 100;

concat_ws(separator,str1,str2,...)

concat_ws() 代表 concat with separator ,是concat()的特殊形式。第乙個引數是其它引數的分隔符。分隔符的位置放在要連線的兩個字串之間。分隔符可以是乙個字串,也可以是其它引數。

select concat_ws(";",id,title) from my_table limit 100;

select id,group_concat(name) from my_table group by id;

select id,group_concat(name separator ';') from my_table group by id;

select id,group_concat(name order by id) from my_table group by id;

select id,group_concat(name order by id separator ';') from my_table group by id;

注:mysql預設對結果限制在1024,會自動截斷,可以通過變數

group_concat_max_len設定,坑!!

repeat(str,count)

select repeat(name,3) from my_table limit 100;

ip位址與對應int(4b)值的相互轉換。

select inet_ntoa(ip) from `ip_t`;//int-->x.x.x.x

select inet_aton(ip) from `ip_t`;>int

date_sub(date,interval expr type)

date 引數是合法的日期表示式。expr 引數是您希望新增的時間間隔。

type 值

select id from my_table where create_time >= date_sub(now(), interval 3 hour) and create_time < now();
當我們在給now()+-乙個時間的時候,其實應該這樣理解的:

+1/+01:加1秒鐘

+101/+0101:加1分鐘1秒鐘

+10101/+010101:加1小時1分鐘1秒鐘

+1010101/+01010101:加1天1時1分鐘1秒鐘

+101010101/+0101010101:加1月1天1時1分鐘1秒鐘

+1101010101/+010101010101:加1年1月1天1時1分鐘1秒鐘,這裡要注意下,年這個部分可以是4位(高位沒有的話會補零):00010101010101

2.8 date_format

date_format() 函式用於以不同的格式顯示日期/時間資料。

date_format(date,format)

date 引數是合法的日期。format 規定日期/時間的輸出格式。

如:select date_format(insert_time,'%y-%m-%d %h:%i:%s') as insert_time from user;

格式描述

%a縮寫星期名

%b縮寫月名

%c月,數值

%d帶有英文本首的月中的天

%d月的天,數值(00-31)

%e月的天,數值(0-31)

%f微秒

%h小時 (00-23)

%h小時 (01-12)

%i小時 (01-12)

%i分鐘,數值(00-59)

%j年的天 (001-366)

%k小時 (0-23)

%l小時 (1-12)

%m月名

%m月,數值(00-12)

%pam 或 pm

%r時間,12-小時(hh:mm:ss am 或 pm)

%s秒(00-59)

%s秒(00-59)

%t時間, 24-小時 (hh:mm:ss)

%u周 (00-53) 星期日是一周的第一天

%u周 (00-53) 星期一是一周的第一天

%v周 (01-53) 星期日是一周的第一天,與 %x 使用

%v周 (01-53) 星期一是一周的第一天,與 %x 使用

%w星期名

%w周的天 (0=星期日, 6=星期六)

%x年,其中的星期日是周的第一天,4 位,與 %v 使用

%x年,其中的星期一是周的第一天,4 位,與 %v 使用

%y年,4 位

%y年,2 位

mysql高階查詢in MySQL高階查詢(一)

in 子查詢 巢狀查詢 重點是思路 為什麼要用in?in 在數值上相當於 但是它可以查詢到更多的符合條件的結果,等於號只可以查詢乙個結果 question 有兩種方法 第一種 使用子查詢替換表連線 使用 inner join 將表與表之間聯動,再將實現條件依次寫出來 第二種 採用子查詢 在where...

mysql 高階 查詢 MYSQL中的高階查詢

1.1.子查詢 1.1.1.在房屋型別中,如何找出比雙人間貴的所有房屋型別?找到雙人間的 根據第一步找到的 作為查詢條件去查滿足條件的房屋型別,利用where字句 子查詢是乙個巢狀在 select insert update 或 delete 語句或其他子查詢中的查詢 子查詢在where語句中的一般...

mysql 高階查詢

1 巢狀子查詢和相關子查詢 子查詢 1 乙個詢語句中還包含其他查詢。其中包含其他查詢的查詢叫父查詢,被包含的查詢叫子查詢。2 子查詢也可以和update insert delete一起使用,語法類似於select語句 3 子查詢中可以再包含子查詢,即允許多層巢狀。select from studen...