求一条 SQL 语句(200分)

  • 主题发起人 主题发起人 zhangrf
  • 开始时间 开始时间
Z

zhangrf

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好,求一条SQL语句:
表:users 字段:names
记录1 张三;李四;王五;赵六;。。。。。。。。。。。(N多个名字)
记录2 张三;李四;赵六;。。。。。。。。。。。(N多个名字)
记录3 王五;赵六;。。。。。。。。。。。(N多个名字)
我要用一个语句查询出涵有 张三 及 赵六 的所有记录;
不想用 where names like '%张三%' and names like '%赵六%'这样的语句,因为假设要查询1000人,那就要将上面的语句重复1000次,这样做效率太低,我试过,我想找一个更好的查询方法,如用charindex或patindex不知道行不,谁可以帮我写一下,再下万分感谢,并慷慨送分!!!
 
那就直接把要查的1000人放到另外的表里面

然后和users表对应就可以了
 
select * from users where (charindex(';张三;', ';'+names+';') > 0) or (charindex(';赵六;', ';'+names+';') > 0)
因为你的names字段,记录的开头部分没有';',所以需要加上去。不知道最后有没有。如果有的话就不用加了。
 
感谢二位的回答,如Corn3所说,如果我的表中有一万人,我想查出其中的五千人,是不是要用的五千个OR,那是不是太麻烦了,有没有简便一点的方法?
 
不用多想了,直接删除该表再说其他的事。
我的意思就是表建的不是很好,建议重新建表。
 
表设计有问题,你这样累的死,重新设计表结构吧
 
select names from users where names in (張三,李四)
 
建议,这样.
你的数据那么大的话,
a表放 user
b表放 names
c表放你要查的names
先将你要查的人放到c表names insert into c  n次

select * from a,b,c where a.id=b.id and b.names=c.names
就一次
 
接受答案了.
 
后退
顶部