查询语句select *from A where 字段1=‘60‘ 这样能查处A表字段1等于60的信息,
但是我的A表有字段1到字段10 10个列 如果我要查询所有字段的数据等于60的怎么查询呢?
难道要写成 select *from  A where  字段1=‘60‘  or  字段2=‘60‘ or  字段3=‘60‘ or  字段4=‘60‘ or  字段5=‘60‘ or  字段6=‘60‘ 这样吗?
有没有一个好的方法能帮我把A表等于60的内容都查询出来呢?

解决方案 »

  1.   

    难道要写成 select *from  A where  字段1=‘60‘  or  字段2=‘60‘ or  字段3=‘60‘ or  字段4=‘60‘ or  字段5=‘60‘ or  字段6=‘60‘ 这样吗?
    ------------------------------
    就得这么写, 没捷径.
    查询字段是数值型, 而且加索引后速度很快. 只是拼sql串时麻烦点儿
      

  2.   

    select * from test where 60 in (A,B,C,D...)
      

  3.   

    所有字段的数据等于60
    ----------
    应该是and而不是or吧?毕竟每个字段的名称还是要敲上去的,怎么写也不见得省事。
      

  4.   

    使用动态SQL来实现。假设你的表结构为
    CREATE TABLE [dbo].[Items] (
    [Id] [int] IDENTITY (1, 1) NOT NULL ,
    [Item1] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Item2] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Item3] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    DECLARE @ix int, @pos int, @str varchar(1000),  @list varchar(1000),@SQL varchar(4000) 
    Set @list='1,2,3'--这里你可以定义到10以此类推
    SET @pos = 1
    SET @ix = 1
    SET @SQL='Select * from Items where '
    WHILE @ix > 0 
    BEGIN
    SET @ix = charindex(',', @list, @pos) 
    IF @ix > 0
    SET @str = substring(@list, @pos, @ix - @pos) 
    ELSE
    SET @str = substring(@list, @pos, len(@list))
    SET @str = ltrim(rtrim(@str))
    SET @SQL = @SQL +' Item'+ @str+'=''60'' and ' 
    SET @pos = @ix + 1 
    END 
    SET @SQL=@SQL+'1=1'
    --SELECT @SQL
    exec(@SQL)
      

  5.   

    遍历A表字段+TStringList也可高效快速拼接出SQL语句。
     
      

  6.   

    还写 标准SQL语句吧
    这样 容易理解