MySQL中的橫表與縱表是兩種常用的表結構。在操作和查詢數據時,由于需求的不同,有時需要將橫表轉換為縱表,以方便數據的分析和處理。
下面介紹一種將MySQL橫表轉換為縱表的方法:
CREATE TABLE `Products` ( `ProductID` INT(11) NOT NULL AUTO_INCREMENT, `ProductName` VARCHAR(50) NOT NULL, `SupplierID` INT(11) NOT NULL, `Price` DECIMAL(10,2) NOT NULL, PRIMARY KEY (`ProductID`) ); INSERT INTO Products (ProductName, SupplierID, Price) VALUES ("Product A", 1, 100.00); INSERT INTO Products (ProductName, SupplierID, Price) VALUES ("Product B", 2, 150.00); INSERT INTO Products (ProductName, SupplierID, Price) VALUES ("Product C", 1, 200.00); INSERT INTO Products (ProductName, SupplierID, Price) VALUES ("Product D", 3, 75.00); SELECT SupplierID, MAX(CASE WHEN ProductName = 'Product A' THEN Price ELSE 0 END) AS 'ProductA', MAX(CASE WHEN ProductName = 'Product B' THEN Price ELSE 0 END) AS 'ProductB', MAX(CASE WHEN ProductName = 'Product C' THEN Price ELSE 0 END) AS 'ProductC', MAX(CASE WHEN ProductName = 'Product D' THEN Price ELSE 0 END) AS 'ProductD' FROM Products GROUP BY SupplierID;
首先,創建一個名為Products的表,該表包含了商品的信息,如產品名、供應商ID和價格。接下來,我們可以通過使用MySQL的內置函數“CASE WHEN”來將橫表轉換為縱表。在這個例子中,我們使用MAX()函數來取代"CASE WHEN"中的"ELSE"部分,防止重復值的出現。最后通過使用GROUP BY來按照供應商ID進行數據的歸類。在這樣的查詢中,我們可以清晰地看到每個供應商所提供的所有商品與價格。
總之,在處理數據時,快速、準確地將橫表轉換為縱表是非常有用的。我們可以利用MySQL內置的函數如"CASE WHEN"來進行轉換。有時,這可能會使SQL語句變得復雜,但與數據的分析和處理相比,這個過程并不算太復雜。
上一篇css 選擇器 簡書
下一篇mysql橫線