MySQL技巧(一)

NOT IN 与 IN

  假设我们又一张score表如下

  

  我们需要查询所有不是性别代号为"0"的学生数据

SELECT * FROM score WHERE id NOT IN(SELECT id FROM score WHERE gender = 0 );

很明显,not in 就是排除的意思。

exists 与 not exists

  exists:有结果集返回则返回true,相反返回false。

  not exists:与exists相反。

使用INSERT INTO.... SELECT 插入数据(将查询出的结果集插入到表中)

 我们有一张student表如下:

select * from score where id > 3;

我们想把上面查询的结果中的name值插入到student表中,可以用多条insert values语句,当然也可以通过insert select的形式

INSERT INTO student(name) select name from score where id > 3;
SELECT *FROM student;

 

很明显,确实已经将查询的结果集插入到了student表中

多表更新

   假设我们有这样的一张表:

  

  不管今后从性能上还是别的考虑,当想把性别中的男用0来代替,女用1来代替的话,可以用update set 的方式进行多表更新,具体如下:

  

  现在要做的是把score表中的性别男,女用上表中的对应id来表示:

  更新score表,score表中的gender字段与gender表中的g_name 绑定,然后修改,gender的值等于 gender表中的g_id,这样就完成了多表更新

UPDATE score INNER JOIN gender ON gender = g_name SET gender = g_id;
SELECT * FROM score;

  

  

原文地址:https://www.cnblogs.com/deepSleeping/p/9932636.html