notulysses給出的解決方案很好,可以解決您的問題。但是如果添加更多行,則查詢可能會變得更大,從而導致編寫不同的解決方案下面
假設設置
CREATE TABLE
CREATE TABLE company (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
company_name VARCHAR(50),
category_1 VARCHAR(50) NOT NULL,
category_2 VARCHAR(50) NOT NULL,
category_3 VARCHAR(50) NOT NULL
);
數據插入
INSERT INTO company(company_name ,category_1 ,category_2 ,category_3) VALUES ('apple', 'mobile', 'pc', 'gadget');
INSERT INTO company(company_name ,category_1 ,category_2 ,category_3) VALUES ('Samsung', 'mobile', 'pc', 'gadget');
INSERT INTO company(company_name ,category_1 ,category_2 ,category_3) VALUES ('microsoft', 'mobile', 'pc', 'gadget');
SQL解決方案以生成ID動態
SELECT @row_number:[email protected]_number+1 AS id, company_name,products FROM (
SELECT company_name ,(SELECT Category_1 FROM company c2 WHERE c2.company_name =c1.company_name) products FROM company c1
UNION
SELECT company_name ,(SELECT Category_2 FROM company c2 WHERE c2.company_name =c1.company_name) products FROM company c1
UNION
SELECT company_name ,(SELECT Category_3 FROM company c2 WHERE c2.company_name =c1.company_name) products FROM company c1
) T ,(SELECT @row_number:=0) rowNum
ORDER BY company_name
如果運行這個查詢,你會得到下面的輸出
id company_name products
------ ------------ --------
1 apple mobile
2 apple pc
3 apple gadget
4 microsoft pc
5 microsoft gadget
6 microsoft mobile
7 Samsung mobile
8 Samsung pc
9 Samsung gadget
請讓我知道,如果它解決您的問題
那麼最好的辦法是規範表,並創建關聯的表舉行類別即一對多關係。 –
@AhhikChakraborty是的,當然。但這不是我的數據庫,我只需要檢索數據。我無法改變人際關係。 – eatmypants
你的創建表在'id整數auto_increment主鍵'後缺少','。我知道這只是一個小的手動錯誤:)也是'插入'查詢語法錯誤。 –