left join
左連接
select count(*) as num from login_log lo LEFT JOIN customer c ON lo.llog_memberid=c.memberid
where c.membertype='0' and DATE_FORMAT(lo.time, '%Y-%m-%d')='$date'
in
存在
SELECT * FROM keyword_name AS t1 , (SELECT count(*) as count , knt_id FROM keyword_subject_msg
WHERE knt_name_subject='4' GROUP BY knt_id) as count_ks WHERE 1 AND t1.kn_active='1'
AND t1.kn_id NOT IN (SELECT knt_id FROM keyword_subject_msg AS t2 WHERE t2.knt_name_subject='-1')
AND t1.kn_id NOT IN (SELECT knt_id FROM keyword_subject_msg ) AND count_ks.knt_id = t1.kn_id
AND count_ks.count between 1 and 5 LIMIT 0,10
max
最大值
SELECT MAX(article) AS article FROM shop;
union
合併
SELECT * FROM a
UNION
SELECT * FROM b
to_days
日期
查詢選擇所有 date_col 值在最後 30 天內的記錄
SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
replace
替換字符
update [table] set [field]=replace([field],'[str_search]','[str_replace]');
可以在最後用 where 做條件選擇
例如:update keyword_name_msg set knm_content=replace(knm_content,'-','_');
concat
連接字符
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
date_format
日期格式化
DATE_FORMAT(date,format) 依照 format 字符串格式化 date 值
SELECT DATE_FORMAT("2006-8-8 23:23:23",'%Y-%m-%d') where DATE_FORMAT(date,'%Y-%m-%d')='$date'
SELECT tb_id,tb_title,DATE_FORMAT(tb_pub_ymd,'%Y-%m-%d') AS tb_pub_ymd FROM tradeleads_base
date
日期
SELECT date( `b_date` ) as date FROM `b`
GROUP BY
分組
SELECT * FROM keyword_name AS t1 , (SELECT count(*) as count , knt_id FROM keyword_subject_msg
WHERE knt_name_subject='4' GROUP BY knt_id) as count_ks WHERE 1 AND t1.kn_active='1'
AND count_ks.knt_id = t1.kn_id AND count_ks.count between 1 and 5 LIMIT 0,10
between and
之間
SELECT t1.*,t2.knt_name AS knt_name FROM keyword_subject_msg AS t1 LEFT JOIN keyword_name_templet AS t2 ON t1.knt_name_subject=t2.knt_id
WHERE 1 AND t1.knt_name_subject='4' AND t1.ksm_active='0'
AND t1.ksm_date BETWEEN '2001-01-1' AND '2006-11-14 23:59:59' ORDER BY ksm_date desc LIMIT 0,20
NOW()
當前日期
NOW() 返回當前的日期時間值
SELECT NOW();
DISTINCT
去重
SELECT distinct b_name FROM `b`
DATE_ADD
日期
前5天的記錄
select count(*) as total from poke_audio_user_profile where lastaccess >= DATE_ADD( now(), INTERVAL -5 day )
常用字符串函數
1. Cancat(s1 , s2 , …Sn) 把傳入的參數連接成爲一個字符串;
2. Insert(Str , x,y , instr) 將字符串str從第x位置開始,y個字符長的子串替換爲字符串instr;
3. Lower(str) 將字符串str轉換成小寫;
4. Upper(str) 將字符串str轉換成大寫;
5. Left(str,x) 和Right(str,x) 返回字符串最左邊和最右邊的X個字符,爲NULL的話則不返回任何字符串;
6. Lpad(str,n , pad) 和 Rpad(str,n , pad) 用字符串pad對str最左邊和最右邊進行填充;
8. Ltrim(str) 和Rtrim(str) 去掉字符串str左則和右側空格;
9. Repeat(str,x) 返回str重複X次的結果;
10. Replace(str,a,b) 用字符串替換字符串str中所有出現的字符串a;
11. Strcmp(s1 ,s2) 比較字符串s1和s2的ASCII碼的大小;
12. Trim(str) 去掉目標字符串的開頭和結尾的空格;
13. Substring(str,x,y) 返回從字符串str中的第X位置起Y個字符串長度的字符;
常用數值函數
1. Abs(x) 返回x的絕對值;
2. Ceil(x) 返回大於x的最大整數;
3. Floor(x) 返回小於x的最大整數;
4. Mod(x,y) 返回X/y的模;
5. Rand() 返回0-1內的隨機值;
6. Round(x,y) 返回參數x的四捨五入的有y爲小數的值;
7. Truncate(x,y) 返回數字x截斷爲y位的小數結果;
日期和時間函數
1. Curdate() 返回當前日期,只包含年月日;
2. Curtime() 返回當前時間,只包含時分秒;
3. Now() 返回當前日期和時間;
4. Unix_timestamp(date) 返回日期date的UNIX時間戳;
5. From_unixtime(unixtime) 返回UNIXTUME時間戳的日期值;
6. Week(date) 返回所給的日期是一年中的第幾周;
7. Year(date) 返回所給日期是哪一年;
8. Hour(time) 返回所給時間的小時;
9. Minute(time) 返回所給時間的分鐘;
10. Monthname(date) 返回date的英文月份名稱;
11. Date_Format(date,fmt) 按字符串fmt格式化日期date值;
日期格式(注意大小寫):
(1) %S,%s 兩位數字形式的秒;
(2) %i 兩位數字形式的分;
(3) %H 兩位數字形式的小時,24小時制;
(4) %h,%I 兩位數字形式的小時,12小時制;
(5) %k 數字形式的小時,24小時制;
(6) %L 數字形式的小時,12小時制;
(7) %T 24小時的時間形式;
(8) %r 12小時的時間形式;
(9) %p AM或PM;
(10) %W 一週中每一天的名稱;
(11) %a 一週中每一天的名稱縮寫;
(12) %d 兩位數字表示月中的天數;
(13) %e 數字形式表示月中的天數;
(14) %D 英文後綴表示月中的天數;
(15) %w 以數字形式表示週中的天數;
(16) %j 以三位數表示年終的天數;
(17) %U 周,Sunday爲週中的第一天;
(18) %u 周,Monday爲週中的第一天;
(19) %M 月名;
(20) %b 縮寫月名;
(21) %m 兩位數字表示的月份;
(22) %c 數字表示的月份;
(23) %Y 四位數字表示的年份;
(24) %y 兩位數字表示的年份;
(25) %% 直接值”%”;
12. Date_Add(date,INTERVAL expr type) 返回所給日期date相差INTERVAL時間段的日期(expr爲表達式,type爲間隔類型);
日期間隔類型:
(1) Hour 小時(hh);
(2) Minute 分(mm);
(3) Second 秒(ss);
(4) Year 年(y);
(5) Month 月(MM);
(6) Day 日(DD);
(7) Year_Month 年和月(YY-MM);
(8) Day_Hour 日和小時(DD hh);
(9) Day_Minute 日和分鐘(DD hh:mm);
(10) Day_Second 日和秒(DD hh:mm:ss);
(11) Hour_Minute 小時和分(hh:mm);
(12) Hour_Second 小時和秒(hh:ss);
(13) Minute_Second 分鐘和秒(mm:ss);
13. Datediff(date1 , date2); 用來計算兩個日期之間相差的天數;
流程函數
1. if(value ,t f) 如果value是真,返回t,否則返回f;
2. ifnull(value1 ,value2) 如果value不爲空返回value1,否則返回value2;
3. Case When [value1] Then[result] … Else[Default] End 如果Value1是真,返回result1,否則返回default;
4. Case [expr] When [value1] Then[result1]… Else[default] End 如果expr等於value1,返回result1,否則返回default;
其他常用函數
1. Database() 返回當前數據庫名;
2. Version() 返回當前數據庫版本;
3. User() 返回當前登錄用戶名;
4. Inet_aton(IP) 返回IP地址的數字表示;
5. Inet_ntoa(num) 返回數字代表的IP地址;
6. Password(str) 返回字符串str的加密版本;
7. Md5() 返回字符串str的MD5值;
|