我有一个小问题,我有两个mysql表"data“和"datas”,它们的结构是相同的。问题是,第一个数据表已经被填充,并且包含了我想迁移到第二个表"datas“的数据,但是我有一个字段,我只是添加了两个表--一个称为" status”的字段,在完成这个字段之前,我要检查状态是'pro‘还是'share’。但是在第一个表" data“上,由于我刚刚添加了status字段,前面存储的数据的状态为NULL。我想做的是制作一个脚本,接收所有存储的数据“数据”并对每一行进行验证,并在"status“字段中填充'pro‘或'part’,并将所有deuxièeme存储在表"datas”中。
我用Mysql。我需要一个脚本来检查每一行,看看状态是‘赞成’还是‘部分’,如果你有想法,不要犹豫告诉我。
提前谢谢你。
发布于 2016-03-25 17:01:31
INSERT INTO DATAS(IDDATA, CONTENT, DATE, TOTAL, UPDATEDATE, STATUT)
SELECT
IDDATA,
CONTENT,
DATE,
TOTAL,
UPDATEDATE,
CASE VARIABLE
WHEN 'CONDITION' THEN 'PRO'
WHEN 'CONDITION' THEN 'PART'
ELSE 'DEFAULT_VALUE'
END AS STATUT
FROM DATA如果在mysql版本上可用,您可以使用JSON_EXTRACT,但是json内容必须有良好的格式化。
JSON_EXTRACT('{"pk": "12", "order": "1234","type":"part"}', '$.type')全例
INSERT INTO DATAS(IDDATA, CONTENT, DATE, TOTAL, UPDATEDATE, STATUT)
SELECT
IDDATA,
CONTENT,
DATE,
TOTAL,
UPDATEDATE,
CASE JSON_EXTRACT(CONTENT, '$.type')
WHEN 'pro' THEN 'PRO'
WHEN 'part' THEN 'PART'
ELSE NULL
END AS STATUT
FROM DATA发布于 2016-03-25 16:55:49
假设所有字段在两个表中都有相同的顺序,状态是最后一个字段。
INSERT INTO datas(iddata,content, date, total, updatedate, statut)
SELECT iddata,content, date, total, updatedate,
case when 1=1 then 'Pro' else 'Share' end as statut
FROM data D 显然,您必须更新案例声明,以适应规则,以确定pro与份额。
您应该能够使用萃取物()提取特定类型,假设它在json文档中始终处于相同的位置。
所以鉴于你的json文件..。就像..。不过,如果您不希望从case语句中获得确切的值,则可能需要将其包装在case语句中。您可能需要将字段“状态”更改为包含json的表中的正确字段名。
INSERT INTO datas(iddata,content, date, total, updatedate, statut)
SELECT iddata,content, date, total, updatedate,
JSON_EXTRACT(status, "$.type") as statut
FROM data D https://stackoverflow.com/questions/36224011
复制相似问题