更新:问题是表1有很多行,表2没有,这就是为什么查询在我第一次运行时更新了多行,但运行了再次查询,它只更新了一行。我不知道为什么它更新了JOIN
查询中未包含的行。
我需要更新表1中的两个字段,其中包含表2中两个字段的数据。
我试过了:
UPDATE heroku_chemical_healtheffect h,
chebi2_compounds c
SET h.chebi_id = c.chebi_accession, h.chebi_name = c.name
WHERE h.name = c.name
但它返回了:1 rows affected. (Query took 0.1351 seconds.)
我尝试使用完整语法:
UPDATE heroku_chemical_healtheffect AS h
INNER JOIN chebi2_compounds AS c
ON h.name = c.name
SET h.chebi_id = c.chebi_accession, h.chebi_name = c.name
但同样的事情发生了。我是以错误的方式将查询拼凑在一起的吗?
Heres table 2
:
当我使用JOIN查询运行SELECT时:
SELECT * FROM heroku_chemical_healtheffect AS h
JOIN chebi2_compounds AS c
ON h.name = c.name
我认为这可能是索引的问题,所以我从h.chebi_id
和h.chebi_name
删除了索引,并将索引放在h.name
和c.name
上,但它没有&#39改变任何事情。
奇怪的是,它并没有覆盖那里已有的一些值。某些h.chebi_id
字段中包含不同的值,并且它们保持不变。它只更新了空白字段。当它向具有空白h.name
字段的每一行插入相同的值时,它返回1 row(s) affected
。即使它更新了几百行。
答案 0 :(得分:0)
试试这个:
n=10
while true; do # "Infinite" loop
expr "$n" - 3
case $? of
1) break ;;
2) echo "Error with expr" >&2; break ;;
esac
...
done