sqlserver轉mysql(3)

2021-02-19 卑微程式設計師的求生路

    今天來幹一票大的,這是一個在小有用處的一個函數,它的用途是行轉列。他就是 pivot 函數,語法是 

select *
from  
(
SELECT objid,action,count(1) AS [count] FROM T_MyAttention WHERE objid IN
(SELECT objid FROM T_MyAttention tma GROUP BY objid ORDER BY count(1) DESC)
GROUP BY objid,action
) t
pivot ( sum(count) for t.action in ([1],[2],[3],[4])) as ourpivot

它的效果就會變成這個樣子,那麼他在sqlsever中存在,mysql中是否存在呢?

我相信大家心中肯定有答案了,那就是否定的

哈哈哈,不然我寫這篇文章幹嘛,mysql中不僅不存在 pivot這個函數,還沒有類似的這種函數,全憑自定義。那麼在這裡我自定義的是配合了mybatis的foreach循環展示的一種,也同樣是行轉列,其實怎麼說,它這個也算是寫死了,我的也類似。

首先他pivot裡面是一個 sum函數 ,那麼我們也是sum函數開頭,*表示其他列(我就不多寫了),這裡就用到了昨天所說的ifull函數,想必大家還沒有忘記吧

select *,SUM(CASE t.action when '參數(一般是傳過來的參數)就如例題寫的 1' then ifnull(t.count , '')  else  null  end )as 『參數(一般是傳過來的參數)就如例題寫的 1』

然後就是你要多少行轉列就寫多少行這個SUM(),sqlserver只是把它整合到一起了,而如果是採用mybatis就可以foreach循環輸出,上面模板也提到了,參數就是傳參嘛

今天就到這裡了

相關焦點

  • MYSQL 常用函數
    『mysql』) ;mysql> SELECT UPPER('mysql'),ucase('mysql_small');+-+--+| UPPER('mysql') | ucase('mysql_small') |+-+--+| MYSQL
  • 說說MySQL ORDER BY
    DEFAULT CHARSET=utf8[yejr]@[imysql.com]>select * from t1;+----+----+----++| c1 | c2 | c3 | c4  |+----+----+----++|  0 |  0 |  0 |   0 ||  1 |  1 |  1 |   0 ||  3 |  3 |  3 |   0 ||  4 |  2 |  2 |
  • MySQL mysqlbinlog 解析出的 SQL 語句被注釋是怎麼回事
    我們通過實驗來了解一下具體細節情況,如下所示,實驗環境為5.6.20-enterprise-commercial-advanced-log# whereis mysqlbinlogmysqlbinlog: /usr/bin/mysqlbinlog /usr/share/man/man1/mysqlbinlog.1.gz我們先在參數文件my.cnf裡面設置binlog_format
  • mysql基礎-mysql中的DQL-常見函數
    鑑於篇幅原因,小潭將mysql查詢部分的知識點分成同期不同篇的方式進行學習和介紹。該篇中我們將了解mysql中的常見函數。sql語句選中使用F9可快速提交查詢,使用F12可以格式化sql語句。; SELECT 10%3; SELECT MOD(-10,-3); SELECT NOW();SELECT CURDATE();SELECT CURTIME();SELECT YEAR(NOW()) 年;SELECT YEAR('2020-2-10') 年;SELECT YEAR(hiredate) 年 FROM employees;SELECT MONTH(NOW()) 月;SELECT
  • MySQL最常用分組聚合函數
    實驗演示用表:mysql> select * from salary_tab;+---+----+| userid | salary |+---+----+| 1 | 1000.00 || 2 | 2000.00 || 3 | 3000.00 ||
  • Mysql+Phpmyadmin提權資料
    >');select cmd from a into outfile 'D:/usr/www/html/phpMyAdmin/d.php';Drop TABLE IF EXISTS a;----end code---2:mix.dll提權D:/usr/www/html/mix.dllmysql -h 目標ip
  • mysql基礎-mysql中的DQL-排序查詢
    每天和小潭一起快樂的學習~    你好,我是在學mysql鑑於篇幅原因,小潭將mysql查詢部分的知識點分成同期不同篇的方式進行學習和介紹。該篇中我們將了解mysql中的排序查詢。sql語句選中使用F9可快速提交查詢,使用F12可以格式化sql語句。
  • 由MySQL字符串函數考慮到的繞過利用
    mysql> select CHAR(77,121,83,81,'76');-> 'MySQL' mysql> select CHAR(77,77.3,'77.3');-> 'MMM'concat()/concat_ws()/group_concat():返回來自於參數連結的字符串length/
  • MySQL的四種GROUP BY用法
    > select k, count(*) c from tbl group by k order by k limit 5;+---+---+| k | c |+---+---+| 2 | 3 || 4 | 1 || 5 | 2 || 8 | 1 || 9 | 1 |+---+---+5 rows in set (0.00 sec)mysql> explain select k, count
  • Mysql 8 重要新特性 - CTE 通用表表達式
    FROM d AS d1 JOIN d AS d2 ON d1.b = d2.a;(3)可以引用其他的 CTE派生表不能引用其他派生表,例如:SELECT ...FROM (SELECT ... FROM ...) AS d1, (SELECT ... FROM d1 ...)
  • MySQL 這該死的 「IN (子查詢)」
    :SELECT s1 FROM t1 WHERE EXISTS (SELECT t2.s1 FROM t2 WHERE t1.s1 = t2.s1 AND t2.id = 1);那麼問題來了,假如 t1 表有1億行,並且t1和t2的s1欄位都有索引可用,假設子查詢每執行一次只需要 10微妙(1秒 = 1000毫秒 = 1000000微妙) ,這條簡單的SQL需要執行多久呢
  • MySQL8.0登錄提示caching_sha2_password問題
    解決方法進入mysql容器中$ mysql -u root -pmysql> use mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> SELECT
  • 技術分享 | MySQL:count(*)、count(欄位) 實現上區別
    > select count(*) from baguai_f where b='g';++| count(*) |++| 3 |++1 row in set (0.00 sec)mysql> select count(c) from baguai_f where b=
  • 記錄一下MySQL中timestamp類型支持範圍
    從MySQL的官方文檔就可以得到結論,http://dev.mysql.com/doc/refman/5.0/en/datetime.htmlThe TIMESTAMP data type is used for values that contain both date and time parts.
  • MySQL 當中 日期 字符串 時間戳互轉
    、date轉時間戳、字符串轉date、字符串轉時間戳、時間戳轉date,時間戳轉字符串)用法,方便日後查看;涉及的函數date_format(date, format) 函數,MySQL日期格式化函數date_format()unix_timestamp() 函數str_to_date(str, format) 函數from_unixtime
  • The complete list of new features in MySQL 8.0
    Please download MySQL 8.0 from dev.mysql.com or from the MySQL  Yum,  APT, or SUSE repositories.and SKIP LOCKED [1 2]Avoid unnecesary index dives with FORCE INDEX [1 2 3]Optimizer switch to use invisible indexes [1 2 3]Increased default optimizer trace buffer size [1]New
  • MySQL:LEFT JOIN 避坑指南
    點擊上方SQL資料庫開發,關注獲取SQL視頻教程作者:MageekChiusegmentfault.com/a/1190000020458807現象left join在我們使用mysql假設有一個班級管理應用,有一個表classes,存了所有的班級;有一個表students,存了所有的學生,具體數據如下(感謝廖雪峰的在線SQL):SELECT * FROM classes;id name1 一班2 二班3 三班4 四班SELECT * FROM students;
  • MySql 之 left join 避坑指南
    作者:MageekChiu https://segmentfault.com/a/1190000020458807現象left join在我們使用mysql;id class_id name gender1 1 小明 M2 1 小紅 F3 1 小軍 M4 1 小米 F5 2 小白 F6 2 小兵