MySQL:更新语句

时间:2011-05-21 20:15:43

标签: mysql sql sql-update

我想要做的是比较两个表,并在tableb中执行更新,其中列与同一列不匹配。

我在SQL中知道这是

update tableb
   set myInt = 1
 where tableA.Column <> tableb.column

这是怎么做的MySQL?

基本上我想做的就是tableA在tableB更新tableB中没有相同的值。

4 个答案:

答案 0 :(得分:1)

您需要加入这两个表。

UPDATE tableB 
INNER JOIN tableA on (TableA.id = TableB.id) 
SET tableB.MyInt = 1 WHERE TableA.`Column` != TableB.`Column`

匹配id的连接似乎是合乎逻辑的,因为

JOIN tableA on (tableA.`column` != tableB.`column`) 

会做一些像交叉连接的事情,可能不是你期望的事情。

请注意,column是MySQL中的保留字,需要用反引号括起来:`

答案 1 :(得分:0)

您应该可以通过加入来完成此操作。

UPDATE TABLEB
FROM TABLEB
INNER JOIN TABLEA ON TABLEA.COLUMN!=TABLEB.COLUMN
SET myINT=1

答案 2 :(得分:0)

使用:

UPDATE tableB 
   SET tableB.MyInt = 1 
 WHERE NOT EXISTS (SELECT NULL 
                     FROM tablea a
                    WHERE a.column = TableB.Column)

......也可以写成:

   UPDATE TABLE_B
LEFT JOIN TABLE_A ON TABLE_A.COLUMN = TABLE_B.COLUMN
      SET TABLE_B.myint = 1
    WHERE TABLE_A.COLUMN IS NULL

答案 3 :(得分:-1)

运营商!=而非<>

试试这个。

update tableb set myInt = 1 where tableA.Column!=tableb.column

编辑:哎呀我完全忽略了连接部分。看一下这个回答。