第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

mysql選擇動態(tài)行值作為列名,另一列作為值

mysql選擇動態(tài)行值作為列名,另一列作為值

斯蒂芬大帝 2019-08-08 16:56:31
mysql選擇動態(tài)行值作為列名,另一列作為值我有一個用戶信息的遺留表(仍在使用中),我無法改變結(jié)構(gòu) -id    name       value------------------------------0     timezone   Europe/London0     language   en0     country    450     something  x1     timezone   Europe/Paris1     language   fr1     country    46時區(qū)/語言/國家等只是名稱的例子,它們可以是變量/除了該列的行之外沒有唯一的有限列表我需要一個可以返回的MySQL兼容的SQL查詢 -id    timezone       language    country  something---------------------------------------------------0     Europe/London  en          45       x1     Europe/Paris   fr          46我已經(jīng)查看了關(guān)于將數(shù)據(jù)庫中的數(shù)據(jù)庫功能隱藏到MySQL中的stackoverflow的各種答案,類似但是它們似乎都不匹配使用來自同一個表的列中的唯一行值的變量列名別名的情況。雖然我睡得很少,所以他們都開始變得有點模糊,提前道歉。我能找到的最近的將是使用準備好的語句它將首先從名稱列中獲取所有可能/唯一值并構(gòu)建一個使用CASE WHEN和/或多個子SELECT或JOIN上的查詢相同的表查詢。我能想到的替代方法是獲取該用戶id的所有行并在for循環(huán)中在應(yīng)用程序本身中處理它們,或者嘗試將名稱限制為有限量并使用sub- SELECTs / JOINs。但是,如果添加新名稱,第二個選項并不理想,我必須重新訪問此查詢。請告訴我,我錯過了一些明顯的東西
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經(jīng)驗 獲得超8個贊

與其他一些RDBMS不同,MySQL本身不支持這種類型旋轉(zhuǎn)操作(開發(fā)人員認為它更適合于應(yīng)用程序的表示,而不是數(shù)據(jù)庫層)。

如果你絕對必須在MySQL中進行這樣的操作,那么構(gòu)建一個準備好的語句是可行的 - 盡管不是亂用CASE,我可能只是使用MySQL的GROUP_CONCAT()函數(shù):

SELECT CONCAT(
  'SELECT `table`.id', GROUP_CONCAT('
     ,    `t_', REPLACE(name, '`', '``'), '`.value
         AS `', REPLACE(name, '`', '``'), '`'
     SEPARATOR ''),
 ' FROM `table` ', GROUP_CONCAT('
     LEFT JOIN `table`   AS `t_', REPLACE(name, '`', '``'), '`
            ON `table`.id = `t_', REPLACE(name, '`', '``'), '`.id
           AND `t_', REPLACE(name, '`', '``'), '`.name = ', QUOTE(name)
     SEPARATOR ''),
 ' GROUP BY `table`.id') INTO @qry FROM (SELECT DISTINCT name FROM `table`) t;PREPARE stmt FROM @qry;EXECUTE stmt;

sqlfiddle上看到它。

請注意,結(jié)果GROUP_CONCAT()group_concat_max_len變量限制(默認值為1024字節(jié):除非您有一些非常長的name值,否則此處不太可能相關(guān))。


查看完整回答
反對 回復(fù) 2019-08-08
  • 1 回答
  • 0 關(guān)注
  • 3392 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號