我有UPDATE
个查询,但执行时出错了。
我正在尝试使用表 import_data 中的值更新 table1 中的值,但我需要表 ids 中的id ...所以表格 ids 链接 table1 和* import简单,不是吗?
UPDATE table1
INNER JOIN import_data ON (
import_data.id = (
SELECT customer_id
FROM ids
INNER JOIN table1 ON (
table1.id = ids.link
)
WHERE ids.type = 'NORMAL'
)
)
SET table1.name = import_data.name;
表1
| id | name |
|----------|-----------|
| AA-00001 | Company 1 |
| AA-00002 | Company 2 |
| AA-00003 | Company 3 |
import_data
| id | name |
|--------|-------------------|
| 401000 | Updated company 1 |
| 401001 | Updated company 2 |
| 401002 | Company 3 |
IDS
| link | id | type |
|----------|--------|--------|
| AA-00001 | 401000 | NORMAL |
| AA-00002 | 401001 | NORMAL |
| AA-00003 | 401002 | NORMAL |
答案 0 :(得分:1)
尝试:
update table1 t1
inner join (
select idata.name, ids.link
from import_data idata
join ids on ids.id = idata.id
where ids.type = 'NORMAL'
) x
on x.link = t1.id
set t1.name = x.name
演示 sqlfiddle
答案 1 :(得分:0)
我认为这取决于您使用的数据库。相关帖子在此处得到解答 - How can I do an UPDATE statement with JOIN in SQL?
答案 2 :(得分:0)
我没有mysql来检查它,但它应该按照你想要的方式工作。请检查。
UPDATE table1
INNER JOIN ids
ON table1.id= ids.link
INNER JOIN import_data
on import_data.id = ids.id
SET table1.name = import_data.name
WHERE ids.type = 'NORMAL';