mysql like反义_PHP+MYSQL 子查询 (一个数据表查询结果供另一个 SQL查询调用)

什么是MYSQL 子查询

MYSQL 子查询是将一个 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)";

查询之后插入到另一个表

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

除了子查询之外,还有内连接查询。

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

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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值