-
利用序列表處理列轉行的數據 select user_name,replace(substring(substring_index(mobile,',',a_id),char_length( substring_index(mobile,',',a.id-1),',',")as mobile from tb_sequernce a cross join select user_name, concat(mobile,',') as mobile,length(mobile)-length(replace(mobile,',',"))+1 size from user1 b ) b on a.id<=b.size; 序列表:存在序列號的表。tb_sequence是序列表。 直接替換user1查看全部
-
列轉行: 單列轉多行:屬性拆分,ETL數據處理查看全部
-
使用CASE語句: SELECT SUM(CASE USER_NAME='A' THEN KILLS END) AS 'A', SUM(CASE USERNAME='B' THEN KILL END) AS 'B', SUM(CASE USERNAME='C' THEN KILL END) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USERNAME; 通過CASE給滿足WHEN語句的數據返回SUM聚合函數要統計的數據,再將SUM進行重命名。推薦。 一般形式 SELECT NAME AS '姓名', SUM(CASE SUBJECT WHEN '數學' THEN MARK ELSE NULL END) AS '數學', SUM(CASE SUBJECT WHEN '英語' THEN MARK ELSE NULL END) AS '英語', SUM(CASE SUBJECT WHEN '語文' THEN MARK ELSE NULL END) AS '語文' FROM SUBJECT GROUP BY NAME; CASE語句中放原來表中要進行轉換的字段(如學科),對其進行分類(如數學、英語、語文)。 注意:要用聚合函數,最后要GROUP BY。查看全部
-
行轉列: 利用自身連接來實現: SELECT * FROM ( SELECT SUM(KILLS) AS 'A' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='A') AS A CROSS JOIN( SELECT SUM(KILLS) AS 'B' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='B') AS B CROSS JOIN( SELECT SUM(KILLS) AS 'C' FROM A INNER JOIN B ON A.NAME=B.USER_NAME WHERE A.NAME='C')AS C; 比如成績 1、分別查詢出不同同學的成績,并將字段名改為同學的名字 2、通過交叉連接,將不同的語句連接起來 缺點:是將原來查詢的結果每一行單獨查詢出來,再進行拼接。因此每增加一個同學就增加一個SELECT語句。并且是通過交叉連接,要保證每個查詢的結果只能是一個,不然沒辦法通過交叉連接實現轉換。查看全部
-
create table arms( id mediumint primary key auto_increment, username varchar(64), arms varchar(64), clothing varchar(64), shoe varchar(64) ); insert into arms(username,arms,clothing,shoe) values('唐僧','九環錫杖','袈裟','僧鞋'),('孫悟空','金箍棒','黃金甲','步云鞋'); select username,'arms',arms from arms union all select username,'clothing',clothing from arms union all select username,'shoe',shoe from arms;?
查看全部 -
刪除重復數據,對于相同數據保留ID最大的。查看全部
-
1113412查看全部
-
cross join查看全部
-
存儲過程——訂單號查看全部
-
如何查詢重復數據? 利用group by 和having語句進行判斷 select user_name ,count(*) from test group by user_name having count(*)>1查看全部
-
刪除重復數據,同時保留id最大的那條記錄 delete a from user1_test a join( select user1_name count(*),max(id) as id from user1_test group by user_name having count(*) >1 )b on a.user_name = b.user_name where a.id<b.id查看全部
-
利用group by和having從句處理查詢數據是否重復 select col1_name,count(*) from table1 group by col1_name having count(*) > 1查看全部
-
用sql生成特殊的序列號查看全部
-
生成序列號的方法查看全部
-
使用union進行行列轉換查看全部
舉報
0/150
提交
取消