sqlin使用
‘壹’ 关于sql中IN 的用方法
你是说每个字段的值有可能是:1,2,3形式?然后要查找其中一个值是否在里面?
形式是不是?:
b字段
1,2,3
3,4,8
3,45
如果是可以用下面这个查询(查询b列中包括5值的记录):
select
A
from
taba
where
b
IS
NOT
NULL
AND
CHARINDEX('5',
b)>0
否则,如果是要查找某一列是否存在某一个值的话,直接用IN就可以做到哟。
比如查询某列是否存在5
select
A
from
taba
where
b
IS
NOT
NULL
AND
b=5
如果你的列是单个值,而你想要判断某列的值是否在指定的值中,你的值形式为:1,2,3,4
如果你想查询b字段中值是否包括在1,2,3,4中,用下面语句
select
A
from
taba
where
b
IS
NOT
NULL
AND
CHARINDEX(b,'1,2,3,4')>0
你可以试试,还是不太明白。
========================================
不太明白意思哟。能把数据类型,格式说下不?int?
是一条记录里面某个字段有多个值呢,还是某列的全部记录有多个值呢?
如果是第一种情况,先转换成字段串,然后用CHARINDEX或PATINDEX判断是否存在某个值就可以了,如果是第二种情况用联合查询。
‘贰’ Java预编译SQL in怎么赋值
sqlin使用方法:
1.in后条件不多,可以考虑主表建索引,或用unionall代替
2.in和exists的区别:如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了,另外IN时不对NULL进行处理。
3.如果in后接几百几千或几万的条件,可把in里的条件录入临时表,给临时表加索引,用表连接代替。
‘叁’ 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)
‘肆’ sql中 in的用法
上面的答案好像和楼主的有点出入哦,感觉怪怪的,更新过??
select
*
from
proct
where
cid
in
(select
cid
from
category
where
pid
=10
);
解决楼主的问题,直接这样就够了也很好理解
就是先在category表里面得到所有小类的cid,然后和proct表连接,输出产品名
不过这里用in是方便理解的,性能上好不好还真不好说
‘伍’ 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是先执行外查询,再执行子查询,找到外查询记录后和只查询对比符合条件的,如果外查询和子查询的条目数差异很大,那么效率相差很明显的。
‘陆’ sql中 in的用法
这样写
select * from proct where cid in(select cid from
category where cid= 10 or pid =10 )
其中 select cid from category where cid= 10 or pid =10
是得到 包括自己在内的大类下面的所有小类的cid
得到了所有满足条件的 cid 后就可以select出 所有类别下面的 产品
然后如果要排序 就在最后加 order by 什么的
‘柒’ sql in语句是什么呢
sql in语句的用法具体指的就是在结构化查询语言这样子的编程语言里面所应用的一些跟in相关的一些语句的,然后在里面的话主要就是有用到查询匹配多个字段这样子的一个过程的。
比如select in就能够以关键字去查询匹配单个字段,然后用相关的一段代码就能够实现这样子的一个过程,然后select in关键字还能够查询匹配多个字段的。
并且在这样子的一个SQL的语句里面,通常就是要去搭配各种不同的语法,然后就能够实现各种不同的过程的。比如把检索的表的名字或者是列的名字进行更改,就能够实现一个不同的过程,所以这就是在SQL语句里面in语句的一个含义。
‘捌’ 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')
‘玖’ 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)
‘拾’ 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')