我有两个不直接相关的表:data
和locations
下面的列
locations : id (serial number) name and code
data : locCodes
其中包含定界的位置代码列表,如“ | loc1 | loc2 | loc3 |” 。
我想将locCode
in替换data
为id
from locations
。我尝试一下,但无法成功。
这个查询似乎正确,但是我实际上无法正确完成更新。
SELECT REPLACE( data.locCodes , CONCAT('|', location.code, '|'), CONCAT('|', location.id, '|'))
FROM data, location
WHERE INSTR(data.locCodes, CONCAT('|', location.code, '|')) > 0
参见http://sqlfiddle.com/#!2/02379/3
UPDATE data
SET locCodes = (SELECT REPLACE( data.locCodes , CONCAT('|', location.code, '|'), CONCAT('|', location.id, '|'))
FROM data, location
WHERE INSTR(data.locCodes, CONCAT('|', location.code, '|')) > 0);
引发关于FROM的错误。MySql非常新,任何指导都值得赞赏。
Manisha,我不知道如何在Mysql中实现以下T-SQL。
给我一些时间来找到一种方法,(在两者之间,您也可以尝试转换)
SQL服务器
select id,locCodes,
(
select '|'+cast(l.id as varchar)
from location l
where d.locCodes LIKE '%|'+l.code+'|%'
for xml path('')
)
+'|' as abc
from data d
group by id,locCodes
的MySQL
SELECT data.*,
(
SELECT concat('|',Replace(GROUP_CONCAT(location.id ),',','|'),'|')
FROM location
WHERE find_in_set(location.code, replace(trim(replace(data.locCodes,'|',' ')),' ',','))
) as locCodes1
FROM data
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句