如何循环遍历表的列并基于列名称,我想根据其他表

时间:2016-07-27 04:03:33

标签: mysql sql-server

表1

| Id | ProductName | Is_JAipur | Is_Rajasthan | Is_Nagpur |
|----|-------------|-----------|--------------|-----------|
|  1 |         101 |         0 |            1 |         0 |
|  2 |         102 |         0 |            0 |         1 |

表2

| Id |      Name |
|----|-----------|
|  1 |    Jaipur |
|  2 | Rajasthan |
|  3 |    Nagpur |

表3

| Id | Product | City |
|----|---------|------|
|  1 |     101 |    2 |
|  2 |     102 |    3 |

我想编写一个查询,以便在循环访问Id列时从table 2获取table 1。并插入table 3。我希望保持这种动态,因为未来城市可能会增加。

1 个答案:

答案 0 :(得分:0)

我已经提到了您的表格设计所需的更改。除非你采用这个,否则你将来会遇到更大的问题。

尽管如此,我正在为您提供当前要求的解决方案:

INSERT INTO your_table_3(Product,City)

SELECT 
t.ProductName,
your_table_2.Id
FROM 
(
    SELECT 
    ProductName,
    CASE WHEN is_JAipur = 1 THEN 'Jaipur' 
             WHEN Is_Rajasthan = 1 THEN 'Rajasthan'
             WHEN Is_Nagpur = 1 THEN 'Nagpur' END AS cityName
    FROM your_table_1 
) AS t
INNER JOIN your_table_2 ON t.cityName = your_table_2.`Name`

WORKING DEMO