只是想知道如何将动态列插入到现有的MySQL表中?例如:我已经有了"sampletable“,我想要创建可以向现有的table,example: column1, column2, column3添加动态列的输入字段。如何用动态编号来实现这一点?
发布于 2014-10-17 03:46:33
我同意@Barmar的观点,如果您试图这样做,您的SQL表结构是错误的。在这种情况下,你要做的就是所谓的“一对多”的关系。这通常是通过下面这样的操作来实现的。
表1:包含所有常用数据的列(在术语中为非“动态”列),以及唯一的ID列,所有良好的数据库表都应该有这些列。
表2: ID列,引用表1中ID列的列,动态列中的数据列。
现在,您可以将通常存储在“动态列”中的值存储在第二个表的各个行中。
示例
// sample:
//
// | id | name |
//
// dynamic_values:
//
// | id | sample_id | value |
// Selecting data
SELECT * FROM sample WHERE id = 1;
SELECT * FROM dynamic_values WHERE sample_id = 1;
// Querying on "dynamic columns"
SELECT * FROM sample s LEFT JOIN dynamic_values d ON d.sample_id = s.id WHERE d.value = 'something';发布于 2016-06-28 14:08:34
尝试使用这组代码为现有的表.创建动态列
SET SQL_SAFE_UPDATES = 0;
Drop TEMPORARY table if exists Temp_Report;
CREATE TEMPORARY TABLE Temp_Report (Report_Date Date);
Drop TEMPORARY table if exists Temp_Product_Tax;
CREATE TEMPORARY TABLE Temp_Product_Tax as SELECT concat(REPLACE(Tax_category,' ','_'),'|',Taxvalue) as 'Tax_category',Taxvalue FROM tax_category c left join taxmaster t on c.id=t.catid ; -- where c.is_Product =1
select * from Temp_Product_Tax;
set Count_1=(SELECT COUNT(*) FROM Temp_Product_Tax);
set Var_1=0;
While(Count_1>Var_1) do
set @Col_Name=Concat( Var_1+1,'_',REPLACE((select Tax_category from Temp_Product_Tax limit Var_1,1),'.','_'),' Double(15,2)');
set @Col_Name=Concat('ALTER TABLE Temp_Report ADD COLUMN ', @Col_Name) ;
PREPARE stmt FROM @Col_Name;
EXECUTE stmt;
set Var_1=Var_1+1;
END While;
select * from Temp_Report;
SET SQL_SAFE_UPDATES = 1;发布于 2014-10-17 03:40:38
实际上,您打算做的事情,即添加动态列,根本不是一个好的实践,我认为。不管怎样,你可以用ALTER TABLE来做这件事。
for($i=1;$i<4;$i++){
mysqli_query("ALTER TABLE mytable ADD COLUMN `input.$i` VARCHAR(40)",$db_con);
}但我也建议采用同样的方式,也就是BARMER在上面的评论中提到的。
https://stackoverflow.com/questions/26417461
复制相似问题