mysql update语句的用法

1.    单表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]

2.    多表的UPDATE语句

UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]

     a.如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。
    b.如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。
    如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。
eg:

UPDATE beyond SET args1=args1+1

 UPDATE赋值被从左到右评估

UPDATE beyond SET args1=args1*2,args1=args1+1

 3. 使用简单的 UPDATE

	UPDATE test.beyond b
	SET b.args1 = '001', b.args2 = '002'

4. 把 WHERE 子句和 UPDATE 语句一起使用

	UPDATE test.beyond b
		SET b.args1 = '001', b.args2 = '002'
	WHERE b.args1 = '11' AND b.args2 = '22'

 

5. 通过 UPDATE 语句使用来自另一个表的信息

UPDATE test.beyond b,test.clzss c
   SET b.args1 = c.clzssId
WHERE  b.args1 = c.userid;

UPDATE titles
   SET ytd_sales = titles.ytd_sales + sales.qty
      FROM titles, sales
    WHERE titles.title_id = sales.title_id
     AND sales.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

   这个例子假定,一种特定的商品在特定的日期只记录一批销售量,而且更新是最新的。如果不是这样(即如果一种特定的商品在同一天可以记录不止一批销售量),这里所示的例子将出错。例子可正确执行,但是每种商品只用一批销售量进行更新,而不管那一天实际销售了多少批。这是因为一个 UPDATE 语句从不会对同一行更新两次。
  对于特定的商品在同一天可销售不止一批的情况,每种商品的所有销售量必须在 UPDATE 语句中合计在一起。

UPDATE titles
    SET ytd_sales = 
       (SELECT SUM(qty)
          FROM sales
             WHERE sales.title_id = titles.title_id
             AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
 FROM titles, sales

 

6. 将 UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用

UPDATE AUTHORS
SET state = 'ZZ'
FROM
	(
		SELECT
			TOP 10 *
		FROM
			AUTHORS
		ORDER BY
			au_lname
	) AS t1
WHERE
	AUTHORS .au_id = t1.au_id

猜你喜欢

转载自bugyun.iteye.com/blog/2255937