zoukankan      html  css  js  c++  java
  • php+mysql 内联接 和 子查询

    INNER JOIN(内连接):取得两个表中存在连接匹配关系的记录

    $sql="SELECT * FROM subject as a INNER JOIN e_user as b ON a.uid=b.id";
    
    //也可以用以下方法
    SELECT article.aid,article.title,user.username FROM article,user WHERE article.uid = user.uid

    LEFT JOIN (左外连):会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录

    $sql="SELECT * FROM subject as a LEFT JOIN e_user as b ON a.uid=b.id";

    在上面的例子中,对于右表中没有对应匹配的数据记录,其所有的列都被置为 NULL,因此要查询这部分记录(如在上面例子中体现为查找 id=4 这类无对应用户的记录),可以附加 IS NULL 条件:

    $sql="SELECT * FROM subject as a LEFT JOIN e_user as b ON a.uid=b.id WHERE b.id IS NULL";

    RIGHT JOIN(右外连): 会取得右表(table2)全部记录,即使左表(table2)并无对应匹配记录

    $sql="SELECT * FROM subject as a RIGHT JOIN e_user as b ON a.uid=b.id";

     除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接

    SELECT article.aid,article.title,user.username,type.typename FROM article INNER JOIN user 
    ON article.uid=user.uid INNER JOIN type ON article.tid=type.tid
    //LEFT JOIN
    SELECT article.aid,article.title,user.username,type.typename FROM article LEFT JOIN user ON article.uid=user.uid LEFT JOIN type ON article.tid=type.tid
    //RIGHT JOIN
    SELECT article.aid,article.title,user.username,type.typename FROM article RIGHT JOIN user ON article.uid=user.uid RIGHT JOIN type ON article.tid=type.tid

    子查询

    子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用

    $sql = "SELECT * FROM e_user WHERE id IN (SELECT uid FROM subject WHERE fun>80)";
     //等同于 SELECT * FROM e_user WHERE id IN(1,2)

    标量子查询

     $sql = "SELECT * FROM e_user WHERE id=(SELECT min(uid) FROM subject)";

    WHERE 表达式中运算符说明:

    参数说明:
    运算符说明
    = 等于
    != 不等于,某些数据库系统也写作 <>
    > 大于
    < 小于
    >= 大于或等于
    <= 小于或等于
    BETWEEN … AND … 介于某个范围之内,例:WHERE age BETWEEN 20 AND 30
    NOT BETWEEN …AND … 不在某个范围之内
    IN(项1,项2,…) 在指定项内,例:WHERE city IN('beijing','shanghai')
    NOT IN(项1,项2,…) 不在指定项内
    LIKE 搜索匹配,常与模式匹配符配合使用
    NOT LIKE LIKE的反义
    IS NULL 空值判断符
    IS NOT NULL 非空判断符
    NOT、AND、OR 逻辑运算符,分别表示否、并且、或,用于多个逻辑连接。
    优先级:NOT > AND > OR
    % 模式匹配符,表示任意字串,例:WHERE username LIKE '%user'

    查询之后插入到另一个表

    INSERT INTO other(id,sid,name,age,subject,total) SELECT null,s.id, s.name,s.age,j.subject,j.total from SUBJECT as j LEFT JOIN student as s on s.id=j.sid

  • 相关阅读:
    Zabbix-Agent客户端安装
    Zabbix添加监控主机
    Zabbix3.x-Server服务端安装
    hdu-1702-栈和队列
    交换瓶子--蓝桥杯
    四平方和-蓝桥杯
    剪邮票--蓝桥杯--dfs--思路超清晰
    方格填数--蓝桥杯---dfs
    快速排序-quicksort
    日志统计--蓝桥杯--vector
  • 原文地址:https://www.cnblogs.com/vania/p/4997818.html
Copyright © 2011-2022 走看看