php+mysql 内联接和 子查询

it2025-04-12  7

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 JOINSELECT 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 JOINSELECT 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 30NOT BETWEEN …AND …不在某个范围之内IN(项1,项2,…)在指定项内,例:WHERE city IN('beijing','shanghai')NOT IN(项1,项2,…)不在指定项内LIKE搜索匹配,常与模式匹配符配合使用NOT LIKELIKE的反义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

转载于:https://www.cnblogs.com/vania/p/4997818.html

最新回复(0)