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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

MySQL動(dòng)態(tài)樞軸

MySQL動(dòng)態(tài)樞軸

呼喚遠(yuǎn)方 2019-12-06 09:58:39
我有一張這樣的產(chǎn)品零件表:部分part_id      part_type      product_id--------------------------------------1            A              12            B              13            A              24            B              25            A              36            B              3我想要一個(gè)查詢,將返回這樣的表:product_id      part_A_id      part_B_id----------------------------------------1               1              22               3              43               5              6在其實(shí)際實(shí)施中,將有數(shù)百萬個(gè)產(chǎn)品零件
查看完整描述

3 回答

?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

不幸的是,MySQL沒有PIVOT函數(shù),但是您可以使用聚合函數(shù)和CASE語(yǔ)句對(duì)其進(jìn)行建模。對(duì)于動(dòng)態(tài)版本,您將需要使用準(zhǔn)備好的語(yǔ)句:


SET @sql = NULL;

SELECT

  GROUP_CONCAT(DISTINCT

    CONCAT(

      'max(case when part_type = ''',

      part_type,

      ''' then part_id end) AS part_',

      part_type, '_id'

    )

  ) INTO @sql

FROM

  parts;

SET @sql = CONCAT('SELECT product_id, ', @sql, ' 

                  FROM parts 

                   GROUP BY product_id');


PREPARE stmt FROM @sql;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

請(qǐng)參見帶有演示的SQL Fiddle


如果只有幾列,則可以使用靜態(tài)版本:


select product_id,

  max(case when part_type ='A' then part_id end) as Part_A_Id,

  max(case when part_type ='B' then part_id end) as Part_B_Id

from parts

group by product_id


查看完整回答
反對(duì) 回復(fù) 2019-12-06
?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

SQL Server有一個(gè)PIVOT關(guān)鍵字,但是對(duì)于MySQL,您將需要使用很多CASE / IF語(yǔ)句或很多JOIN。


這是有關(guān)如何執(zhí)行此操作的先前文章。


查看完整回答
反對(duì) 回復(fù) 2019-12-06
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

只需引用兩次-(您在這里實(shí)際上沒有太多問題)


select a.product_id, a.part_id "part_a_id", b.part_id "part_b_id"

from parts a, parts b

where a.product_id = b.product_id


查看完整回答
反對(duì) 回復(fù) 2019-12-06
  • 3 回答
  • 0 關(guān)注
  • 642 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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