MySql update 表间更新数据
02月 25th, 2009 — Dreamer
有两个表,结构如下:
a(id,sex,email,public)
b(id,depart,salary)
由于需求改变,要为 b 也增加一个 public 字段,并且和 a 表中 id 相同的记录中的 public 的值相同。
加一个字段比较容易,直接 alter就行了,但是表间更新数据以前没做过,就google 之,结果发现很多人都是这么写的:
UPDATE b SET public=a.public FROM a WHERE b.id=a.id
但是在Mysql 下面死活不好使,总是提示有错误,后来查了一下资料,发现 mysql 不支持 update 里面有 from 子句,网上很多人写的可能都是针对 sqlserver 或其他数据库的。改写SQL 如下:
UPDATE b,a SET b.public=a.public WHERE b.id=a.id MySql 随机取N条数据
SELECT * FROM `table`
WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
ORDER BY id LIMIT 1;
SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id LIMIT 1;