MySQL联表CRUD

1.查询

使用JOIN(LEFT JOIN取全部左边数据,RIGHT JOIN取全部右边数据,INNER JOIN 取共同数据)

SELECT user.id,user_money.money FROM user JOIN user_money ON user.id = user_money.uid WHERE user_money.money>0

2.插入

需求:将一个表取出数据插入到另一个表中

实例:
INSERT INTO user_money(uid,money) SELECT uid,sum(money)/100 as money FROM `user_active` WHERE type IN (5,6)   GROUP BY uid
注意插入的字段顺序一定要和后面查询出来的字段顺序一致

3.更新

需求:将一个表取出数据更新另一个表

UPDATE T1, T2,
[INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1
SET T1.C2 = T2.C2, 
    T2.C3 = expr
WHERE condition
让我们更详细地看看MySQL UPDATE JOIN语法:
首先,在UPDATE子句之后,指定主表(T1)和希望主表连接表(T2)。 请注意,必须在UPDATE子句之后至少指定一个表。UPDATE子句后未指定的表中的数据未更新。
第二,指定一种要使用的连接,即INNER JOINLEFT JOIN和连接条件。JOIN子句必须出现在UPDATE子句之后。
第三,要为要更新的T1和/或T2表中的列分配新值。
第四,WHERE子句中的条件用于指定要更新的行。

实例:
UPDATE user_money JOIN  (SELECT sum(val_2)/100 as money,uid FROM `user_hd` WHERE type IN (5,6) GROUP BY uid) as m  ON user_money.uid=m.uid SET user_money.money = user_money.money+m.money  

4.删除

DELETE T1, T2
FROM T1
INNER JOIN T2 ON T1.key = T2.key
WHERE condition
请注意,将T1和T2表放在DELETEFROM关键字之间。如果省略T1表,DELETE语句仅删除T2表中的行记录。 
同样,如果省略了T2表,DELETE语句将只删除T1表中的行记录。
表达式T1.key = T2.key指定了将被删除的T1和T2表之间的匹配行记录的条件。
WHERE子句中的条件确定T1和T2表中要被删除的行记录。

猜你喜欢

转载自blog.csdn.net/z15818264727/article/details/80652349