2013-03-04 27 views
2

我正在查看某人在一个表中提交的内容与数据库中的另一个表之间是否匹配。 我不知道如何设置它。什么即时尝试是匹配2 sql列如果=然后更新一个不同的列1

IF tableA column A = tableB column B then table A column C = Column C + 1. 

我试过更新的方法,但似乎不适合我。任何帮助都会很棒。谢谢。

+0

RTLM什么? http://dev.mysql.com/doc/refman/5.0/en/update.html – 2013-03-04 16:58:26

+0

左连接?内部联接?这是否是psuedocode?你的查询是什么?结果如何?预期成绩? – Hituptony 2013-03-04 16:59:13

回答

3

一般会是这样:

UPDATE TABLE_A a JOIN TABLE_B b 
    ON a.join_col = b.join_col AND a.column_a = b.column_b 
SET a.column_c = a.column_c + 1 

join_col价值可能user_ID的,所以你只在TABLE_A有关该更新的行同一用户TABLE_B中具有相同的值。

+0

感谢您提交此。现在回来运行它。让你知道它是怎么回事 – Ricky 2013-03-04 17:08:25

+0

你可能需要调整它以将column_c的值加1,除非column_c已经是整数。有时类型转换可能很复杂。 – 2013-03-04 17:10:01

+0

如果我还有第三张桌子,如果这仍然可以工作,我很好奇。我正在阅读在UPDATE中使用3个表连接并不起作用?我想要的是UPDATE tablec JOIN tablea JOIN tableb – Ricky 2013-03-04 19:14:02

1

我想你可以在mysql中做到这一点:

UPDATE TableA a, TableB b 
SET a.ColumnC = ColumnC + 1 
WHERE a.ColumnA = b.ColumnB; 
+0

这会更新TableA中的所有行,其中a.ColumnA = b.ColumnB - 即使它们来自不同的用户。在这种情况下,如果*任何*用户的ColumnB等于该用户的ColumnA,它将更新TableA - 我相信OP只想为该特定用户更新ColumnC。 – 2013-03-04 17:04:52

+0

这段代码是为了显示语法而呈现的伪代码的转换,@Ricky可以根据需要更改它。 – Bulat 2013-03-04 17:07:39

0

,如果这是你想要

update tableA set colA=(select (case when b.colB=colA then colC+1 else colC end) from tableB b) 
+0

不,这不会工作的原因很多。即使它没有错误地执行,它也会更新错误的列。 – andr 2013-03-04 17:24:00

相关问题