导航:首页 > 编程大全 > 数据库查询时in的操作

数据库查询时in的操作

发布时间:2023-01-03 00:22:05

A. mysql查询 怎么使用 in

in作为查询条件,一般典型有两种用法:

一是IN常量,例如下面语句查询一、三年级的学生:
SELECT * FROM student WHERE grade IN ('一','三');

二是使用子查询,也就是IN(SQL语句),例如下面的语句查询不及格的班级的所有学生:
SELECT * FROM student WHERE classno IN (
select classno from scores where score<60
);

B. 数据库in的用法

数据库in的用法的用法你知道吗?下面我就跟你们详细介绍下数据库in的用法的用法,希望对你们有用。

数据库in的用法的用法如下:

MySQL IN 语法

IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:

WHERE column IN (value1,value2,...)

WHERE column NOT IN (value1,value2,...)

当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。

IN 使用实例

选取 uid 为 2、3、5 的用户数据:

SELECT * FROM user WHERE uid IN (2,3,5)

返回查询结果如下:

uid

username

password

email

regdate

2 小明 [email protected] 1278063917

3 Jack [email protected] 1278061380

5 5idev [email protected] 1291107029

IN 子查询

更多情况下,IN 列表项的值是不明确的,而可能是通过一个子查询得到的:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)

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

SELECT uid FROM user WHERE status=0

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

IN 运算符补充说明

IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:

SELECT * FROM user WHERE uid IN(1,2,'3','c')

一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:

SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')

使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。

关于 IN 运算符的效率问题

如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:

SELECT * FROM user WHERE uid IN (2,3,5)

// 等效为:

SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)

一般认为,如果是对索引字段进行操作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。

C. SQL语句中 in和or的区别

SQL语句中 in和or的区别为:操作不同、适合不同、执行效率不同。

一、操作不同

1、in:in是把父查询表和子查询表作hash连接。

2、or:or是对父查询表作loop循环,每次loop循环再对子查询表进行查询。

二、适合不同

1、in:in适合用于子查询表数据比父查询表数据多的情况。

2、or:or适合用于子查询表数据比父查询表数据少的情况。

三、执行效率不同

1、in:在没有索引的情况下,随着in后面的数据量越多,in的执行效率不会有太大的下降。

2、or:在没有索引的情况下,随着or后面的数据量越多,or的执行效率会有明显的下降。

D. sql语句中in的用法

IN 操作符允许我们在 WHERE 子句中规定多个值。

SQL IN 语法:

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...)

(4)数据库查询时in的操作扩展阅读:

1、IN 与 = ANY 等价,均表示,变版量在(子查询)列权表之中,即 a IN (table B) 表示 a = ANY B.b

2、NOT IN 与 <> ALL 等价,而不等于<> ANY,前两者均表示,变量不在(子查询)列表之中,即 a NOT IN (table B) 表示 a <> ALL B.b。而如果a <> ANY B.b,则只要任意一个b<>a就true了。

3、IN 与 EXISTS 的性能区别主要来自,IN 会编列子查询的每行记录,然后再返回,而EXISTS 则只要遇到第一个满足条件的记录就马上返回。

E. Sql Server 中 in 和 between 的用法..

操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

(5)数据库查询时in的操作扩展阅读

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

参考资料SQL_ 网络

F. mysql查询 怎么使用 in

in作为查询条件,一般典型有两种用法:

一是IN常量,例如下面语句查询一、三年级的学生:
SELECT * FROM student WHERE grade IN ('一','三');

二是使用子查询,也就是IN(SQL语句),例如下面的语句查询不及格的班级的所有学生:
SELECT * FROM student WHERE classno IN (
select classno from scores where score<60
);

G. 在ASP.NET中使用SQL的IN操作

这篇文章将建立一列包含CheckBox控件的DataGrid 这个控件允许用户对明细浏览进行多列选择 如果没有恢复对于动态SQL获得该功能的一种方法 那么必须使用IN操作 在文章的结尾 我们写了一个SQL Server用户自定义函数(UDF) 为了将一个字符串分解成带分隔符的子字符串 在这篇文章中 我们能看到这样一个UDF如何派得上用场 我们将建立一个web表单 在此用户可以通过选择checkbox控件而选择一些在DataGrid中的记录 对这些被检查的记录的明细将会出现在表单中的另一个DataGrid中 这个表单像来如图所示 在下面显示了我们用来建立表单的ASPX 注意 如何使用TemplateColumn和Checkbox控件增加DataGrid列 我们也使用DataGrid的DataKeyField属性来告诉对象 在数据库记录的哪一个字段将会包含第一行的关键字标示符 <form id= Form method= post runat= server ><asp:DataGrid id= DataGrid runat= server AutoGenerateColumns= False DataKeyField= EmployeeID ><Columns><asp:TemplateColumn><ItemTemplate><asp:CheckBox runat= server ID= EmployeeCheckBox /></ItemTemplate></asp:TemplateColumn><asp:TemplateColumn><ItemTemplate><%# DataBinder Eval(Container DataItem LastName ) %> <%# DataBinder Eval(Container DataItem FirstName ) %></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid><hr><asp:Button id= Orders runat= server Text= View Orders ></asp:Button><hr><asp:DataGrid ID= DataGrid Runat= server AutoGenerateColumns= True /></form>当表单加载初始化时 需要组装顶端的DataGrid 代码使用Enterprise Library来存取SQL Sever Northwind例子数据库并且执行 SELECT EmployeeID FirstName LastName FROM Employees 这一语句 加载事件的代码如下 private void Page_Load(object sender System EventArgs e){if(!Page IsPostBack){Database db = DatabaseFactory CreateDatabase();DBCommandWrapper dbCommandWrapper;using(dbCommandWrapper = db GetSqlStringCommandWrapper(SELECT_EMPLOYEES)){using (IDataReader dataReader = db ExecuteReader(dbCommandWrapper)){DataGrid DataSource = dataReader;DataGrid DataBind();}}}}当用户单击 Orders 按钮时 我们想显示与数据库中的那些与Employees相配并与Orders数据相关的第二个数据表格 这样做的一种方法是建立动态的SQL并且使用所有EmployeeIDs所需的WHERE语句的OR条件 第二个方法是使用WHERE语句的IN操作 IN操作将会一列表达式进行比较 例如 下列语句返回employee中IDS 和 之间的信息 SELECT EmployeeID FirstName LastName FROM Employees WHERE EmployeeID IN ( )在观念上说 我愿意使用一个单一字符串参数来查询所传递的IDs 然而 也许作为一个单字符串 不能对IN操作使用一个单一字符串参数 如果那样 SQL语句会这样 WHERE Employee IN ( ) 并且数据库因为EmployeeID属于类型int—不属于varchar类型而返回一个错误消息 不过 我们使用文章中构造的split函数将字符串分离成不同的值 向split函数传递字符串 并且我们会得到与值 和 相对应的两条记录 选择employees并且计算它们的定单总数的SQL查询 将会如下 SELECT count(*) AS Orders E FirstName E LastNameFROM Orders OINNER JOIN Employees E ON O EmployeeID = E EmployeeIDWHERE E EmployeeID IN(SELECT Value FROM fn_Split(@employeeIDs ))GROUP BY FirstName LastNameORDER BY count(*) DESC使用以上查询所需要的是必须建立和传递@employeeIDs参数 这个参数将是用逗号隔开的IDs列表 为了建立该字符串 为了弄明白行是否被用户选择 我们需要使用一个循环 这一循环以行数循环次数 并且检查每一个checkbox控件 如果用户选择了行 通过从表的DataKeys属性中(它被建立在ASPX文件中来指向EmployeeID字段)提取检验人 将关键字保存在employee中 private string GetCheckedEmployeeIDs(){String delimiter = String Empty;StringBuilder employeeIDs = new StringBuilder();for(int i = ; i < DataGrid Items Count; i++){CheckBox checkbox;checkbox = DataGrid Items[i] FindControl( EmployeeCheckBox ) as CheckBox;if(checkbox != null && checkbox Checked == true){employeeIDs Append(delimiter + DataGrid DataKeys[i] ToString()) ;delimiter = ;}}return employeeIDs ToString();}以上方法返回一个字符串 像 对Orders按钮单击事件处理器将涉及这样一个方法 将信息传递至SQL以得到employees和orders的列表 并且将其结果绑定在第二个DataGrid对象中 private void Orders_Click(object sender System EventArgs e){string employeeIDs = GetCheckedEmployeeIDs();Database db = DatabaseFactory CreateDatabase();DBCommandWrapper dbCommandWrapper;using(dbCommandWrapper = db GetSqlStringCommandWrapper(SELECT_ORDERS)){dbCommandWrapper AddInParameter( @employeeIDs DbType String employeeIDs);using (IDataReader dataReader = db ExecuteReader(dbCommandWrapper)){DataGrid DataSource = dataReader;DataGrid DataBind();}}} lishixin/Article/program/ASP/201311/21852

H. sql语句中in的用法

你这样构造in的范围不对。你这样是把in后面处理成一个字符串了。而in后面跟的应该是一个范围。
你可以自己写一个返回数据集的函数来将aa.ddid值处理成in的范围,
类似于:
假设函数:
ft01(nvarchar(1000))
returns
table
tb
(val
int)。
那么,
这样更新里面子查询的in条件:
where
id
in
(select
val
from
ft01(aa.ddid))。
另外,
此解决方法只是从in条件上来说。
如果子查询只有1条记录,in和=是没有区别,如果子查询有多条记录,用=会出错的,所以in是无论只查询有多少条记录都可以使用,而=只有当子查询只有1条记录的时候才能使用。
in和exists理解上其实是差不多,但对数据库而言,in的执行顺序是先执行只查询条件,然后把记录和外查询核对,找符合条件的。
而exists是先执行外查询,再执行子查询,找到外查询记录后和只查询对比符合条件的,如果外查询和子查询的条目数差异很大,那么效率相差很明显的。

I. in在sql中是什么意思

SQL中的IN 操作符,表示允许在 WHERE 子句中规定多个值。

from 树懒学堂

阅读全文

与数据库查询时in的操作相关的资料

热点内容
嵌入式linux有哪些特点 浏览:587
展开收缩代码 浏览:189
archlinuxfn 浏览:744
文件档案管理系统毕业设计 浏览:391
网络机顶盒电视没信号怎么回事 浏览:384
苹果手机如何下载来玩 浏览:826
win10安装重新启动 浏览:395
复制文件和文件夹出错 浏览:652
加工中心编程如何学 浏览:16
电脑扫码支付密码吗 浏览:815
网络微信平台 浏览:165
applepay未添加此卡 浏览:201
哪个网站可以试玩cq9游戏 浏览:367
怎么查电信光纤账号和密码是什么样的 浏览:830
iphone如何发录音文件 浏览:982
windowsxp桌面小工具 浏览:154
运动类app开发设计 浏览:401
psico图标文件生成 浏览:706
将所有文件名导入数据库 浏览:856
查看linux服务器使用情况 浏览:177

友情链接