找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 2610|回复: 0

mysql中 where in 用法详解

[复制链接]

431

主题

77

回帖

8

广播

论坛版主

积分
214
泰拉
0
水晶
10
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

发表于 2021-3-13 12:03:36 | 显示全部楼层 |阅读模式
本帖最后由 mickeyort 于 2021-3-13 13:06 编辑

主要语法: (NOT IN 为不在列表内的: 即反向选择)

  1. WHERE column IN (value1,value2,...)
复制代码
  1. WHERE column NOT IN (value1,value2,...)
复制代码


1、in 后面是记录集,如:

  1. select  *  from  table  where   uname  in(select  uname  from  user);
复制代码


例子:

  1. SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
复制代码

在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。
首先通过一个查询得到所有所有 status=0 的用户;


然后将查询结果作为 IN 的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。
就是说可以用结果集查询

2、in 后面是字符串,如:

  1. select  *  from  table  where   uname  in('aaa',bbb','ccc','ddd','eee',ffff'');
复制代码


注意:这里一定要将字符串用单引号'' 标注起来;

3、in 后面是数组,用如下方法,请参考:

  1. //$pieces是含数据的数组

  2. for($i=0;$i<count($pieces);$i++){
  3.   $uname=$uname."'".$pieces[$i]."',";
  4. }

  5. $the_uname ="uname in(".$uname."'')";

  6. select  *  from  table  where    ".$the_uname." ;
复制代码

备注:这种方法的原理其实很简单,二就是把数组编程上面“第2种情况”的形式

4. 其他用法

首先来个例子方便理解 uid IN (1,2,3)
  1. SELECT * FROM user WHERE uid IN (2,3,5)
  2. // 等效为:
  3. SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
复制代码


其实IN可以用 AND 或者OR 链接
  1. SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','机器人1号')
复制代码
以上例子可以理解为 uid=1 OR uid=2 OR username='admim' OR username='机器人1号' 的数据行

获得 大福神卡 一张

卡片说明:mickeyort 遇到 [好色的朝歌] 被啪啪啪了 82 完事之后他给你付了 泰拉.

卡片效果:获得 82 泰拉

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-5-3 05:10 , Processed in 0.116031 second(s), 40 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表