当前位置:首页 » 编程语言 » sql中in的用法

sql中in的用法

发布时间: 2022-10-02 01:59:02

1. in的sql IN 语法

in 是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询。
一直以来认为exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:select * from A where cc in (select cc from B) 效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc) 效率高,用到了B表上cc列的索引。相反的
2:select * from B where cc in (select cc from A) 效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc) 效率低,用到了A表上cc列的索引。带in的关联子查询是多余的,因为in子句和子查询中相关的操作的功能是一样的。
如:select staff_name from staff_member where staff_id in (select staff_id from staff_func where staff_member.staff_id=staff_func.staff_id);
为非关联子查询指定exists子句是不适当的,因为这样会产生笛卡乘积。如: select staff_name from staff_member where staff_id exists (select staff_id from staff_func);
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论哪个表大,用not exists都比not in要快。尽量不要使用not in子句。使用minus 子句都比not in 子句快,虽然使用minus子句要进行两次查询: select staff_name from staff_member where staff_id in (select staff_id from staff_member minus select staff_id from staff_func where func_id like '81%');
in 与 = 的区别select name from student where name in ('zhang','wang','li','zhao');与select name from student where name='zhang' or name='li' or name='wang' or name='zhao'的结果是相同的。

2. in在sql中是什么意思

select * from table where id in (1,3,5)
查询表里 id 是1 或者3 或者5 的记录
select * from table where name in ('小明','小红','小丽')
查询表里 name 等于 小明 或者小红 或者 小丽的记录
还有not in

3. sql中in函数的用法

IN
操作符
IN
操作符允许我们在
WHERE
子句中规定多个值。
SQL
IN
语法
SELECT
column_name(s)
FROM
table_name
WHERE
column_name
IN
(value1,value2,...)
IN
操作符实例
现在,我们希望从上表中选取姓氏为
Adams

Carter
的人:
我们可以使用下面的
SELECT
语句:
SELECT
*
FROM
Persons
WHERE
LastName
IN
('Adams','Carter')

4. 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是先执行外查询,再执行子查询,找到外查询记录后和只查询对比符合条件的,如果外查询和子查询的条目数差异很大,那么效率相差很明显的。

5. “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条件上来说。

6. sql in用法

看你的C的类型,如果是int就是:in(1,2,3,4,5);如果是string就是in('ab','ac','bb','bc')这样的

7. sql中 in的用法

你现在的这个要求一般不用in.
假如你说的大类C是指大类的名称是"C",
则用下面的语句:
select
c.*
from
category
a,category
b,
proct
c
where
a.name='C'
and
a.pid=0
and
b.pid=a.cid
and
c.cid=b.cid
首先从category中取出name为'C'且pid为0的数据(得到cid),
表映射到a;
然后以自联,再从category中取得pid为a的cid的数据(也就是大类C中的所有小类,表映射到b;
最后再关联产品表proct,
取得cid为b的cid的所有产品,表映射到c.
当然,
如果你所说的C大类,
直接就知道其id号,
就像你给的例子中直接知道了10,
那么"自联"这步就不需要了.
-------------------------------
如果非要用in,
则按下面的方式:
select
*
from
proct
where
cid
in
(
select
b.cid
from
category
a,category
b
where
a.name='C'
and
a.pid=0
and
b.pid=a.cid
)
-------------------------------
另外,
in
还用在下面这种情况,
比如:
你想取得1,3,8,9这四个小类的所有产品,
则可以用:
select
*
from
proct
where
cid
in
(1,3,8,9)

8. sql中 in的用法

你现在的这个要求一般不用in.

假如你说的大类C是指大类的名称是"C", 则用下面的语句:

select c.*
from category a,category b, proct c
where a.name='C' and a.pid=0
and b.pid=a.cid
and c.cid=b.cid

首先从category中取出name为'C'且pid为0的数据(得到cid), 表映射到a;
然后以自联,再从category中取得pid为a的cid的数据(也就是大类C中的所有小类,表映射到b;
最后再关联产品表proct, 取得cid为b的cid的所有产品,表映射到c.

当然, 如果你所说的C大类, 直接就知道其id号, 就像你给的例子中直接知道了10, 那么"自联"这步就不需要了.

-------------------------------

如果非要用in, 则按下面的方式:

select * from proct where cid in (
select b.cid
from category a,category b
where a.name='C' and a.pid=0
and b.pid=a.cid
)

-------------------------------

另外, in 还用在下面这种情况, 比如:

你想取得1,3,8,9这四个小类的所有产品, 则可以用:

select * from proct where cid in (1,3,8,9)

9. sql in语句是什么呢

sql in语句的用法具体指的就是在结构化查询语言这样子的编程语言里面所应用的一些跟in相关的一些语句的,然后在里面的话主要就是有用到查询匹配多个字段这样子的一个过程的。


比如select in就能够以关键字去查询匹配单个字段,然后用相关的一段代码就能够实现这样子的一个过程,然后select in关键字还能够查询匹配多个字段的。

并且在这样子的一个SQL的语句里面,通常就是要去搭配各种不同的语法,然后就能够实现各种不同的过程的。比如把检索的表的名字或者是列的名字进行更改,就能够实现一个不同的过程,所以这就是在SQL语句里面in语句的一个含义。

10. sql中in函数的用法

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

SQL IN 语法
SELECT column_name(s)

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

IN 操作符实例
现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons
WHERE LastName IN ('Adams','Carter')

热点内容
ipad设置文件夹密码 发布:2024-12-24 20:07:52 浏览:533
幻塔h201避难所密码锁是多少 发布:2024-12-24 20:01:53 浏览:853
电脑配置怎么看硬盘 发布:2024-12-24 20:00:22 浏览:866
青海云服务器租用公司 发布:2024-12-24 19:59:42 浏览:819
数据库记录排序 发布:2024-12-24 19:50:06 浏览:600
byte转stringpython 发布:2024-12-24 19:48:30 浏览:668
战地一配置低显示器分辨率怎么调 发布:2024-12-24 19:48:19 浏览:428
如何判断脚本是否开了 发布:2024-12-24 19:47:32 浏览:655
安卓怎么退出纯净模式 发布:2024-12-24 19:31:37 浏览:309
sql存储过程结果输出 发布:2024-12-24 19:10:52 浏览:555