-
begin; --啟動事務 insert into 表名 values (); --向表中插入數據 select * from 表名 rollback; --回滾事務 rollback 回滾的意思。 就是數據庫里做修改后 ( update ,insert , delete)未commit 之前 使用rollback 可以恢復數據到修改之前。 insert into 表名 values(); select * from 表名 會發現出現了空洞查看全部
-
唯一序列號: 場景:數據庫主鍵、業務序列號 優先選擇系統提供的序列號生成方式。但可能會有空洞產生。 特殊情況下可使用SQL方式生成序列號,如要求有一定規律,不一定由數字構成 系統生成方法: rollback數據回滾查看全部
-
使用序列化表的方式來實現列轉行查看全部
-
使用UNION的方式實現列轉行: UNION是無重復記錄的 UNION ALL是所有記錄,是可重復的查看全部
-
行轉列: SELECT username,REPLACE(substring(SUBSTRING_INDEX(mobile,',',a.id), CHAR_LENGTH(SUBSTRING_INDEX(mobile,',',a.id-1))+1),',','') AS mobile FROM tb_sequence AS a CROSS JOIN (SELECT username, CONCAT(mobile,',') AS mobile, (LENGTH(mobile)-LENGTH(REPLACE(mobile,',',''))+1) AS size FROM user1) AS b ON a.id <= b.size;查看全部
-
行轉列: 利用自身連接來實現: 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語句。并且是通過交叉連接,要保證每個查詢的結果只能是一個,不然沒辦法通過交叉連接實現轉換。查看全部
-
SQL開發技巧(二) 內容介紹: 1.如何進行行列轉換 2.如何生成唯一序列號 3.如何刪除重復數據查看全部
-
行轉列查看全部
-
case行轉列查看全部
-
sql 分號代表一行的結束,中間不要加分號。查看全部
-
更復雜的重復數據查看全部
-
如何處理重復的數據查看全部
-
select sum(case when user_name='孫悟空' then kills end) as '孫悟空', sum(case when user_name='豬八戒',thwn kills end) as '豬八戒') from user_name a join user_kills b on a.id = b.id查看全部
-
利用序列表處理列轉行的數據查看全部
-
關于學生成績的行轉列代碼參考: //表格定義及數據 create table if not exists score( id smallint unsigned not null primary key auto_increment, uname varchar(100) not null, subject varchar(100) not null, score smallint not null )engine=innodb default charset=utf8; insert score values (default, 'a', 'math', 10), (default, 'a', 'english', 20), (default, 'a', 'chinese', 30), (default, 'b', 'math', 50), (default, 'b', 'english', 60), (default, 'b', 'chinese', 70), (default, 'c', 'math', 110), (default, 'c', 'english', 120), (default, 'c', 'chinese', 130); //轉換代碼: select math.uname,math.math,english.english,chinese.chinese from (select id, uname, score as math from score where subject='math') as math inner join (select id, uname, score as english from score where subject='english') as english on math.uname=english.uname inner join (select id, uname, score as chinese from score where subject='chinese') as chinese on chinese.uname=english.uname;查看全部
舉報
0/150
提交
取消