0

我有一个搜索 jsp,它有多个用于搜索数据库的条件(ID OR NAME OR DATE OR ...)。我需要一个选择查询来满足所有条件。我已经部分编写了选择查询,但它运行不正常。请帮我完成查询

   select * from table 1
   where Id in ( select id from table 1 where ( those three conditions here)

   i have (1=? or id=?)
         and (1=? or name=?)
         and (1=? or date =?)

但它返回完整的表。我知道这三个条件返回 true。如何修改它以获得结果。我不想要任何存储过程,因为我是新手

4

3 回答 3

1

如果您的条件对每一行都成立,您将获得完整的表格。

例如,如果您的变量是1,1 = 1将为真,并且将返回每一行。


p,s,我不明白你为什么嵌套了选择。

于 2012-11-22T04:10:53.360 回答
0

你有一个多余的子查询。

我假设第一个参数将是1如果第二个参数为空,0如果第二个参数不为空;同样,如果第四个参数为空,第三个参数也会10如果第四个参数不为空,等等?

尝试这个:

select * from table
where (1=? or id=?)
     and (1=? or name=?)
     and (1=? or date =?)

例如,如果用户按名称搜索,我希望参数类似于(1,NULL,0,'SMITH',1,NULL).

(此外,您不能1用于表别名。)

于 2012-11-22T04:51:26.923 回答
0
select * from table 1
   where Id in ( select 
         (case 
               when (1=? or id=?) and (1=? or name=? )  and (1=? or date =?) then id
          end) as id from table 1 )

我希望这就是你要找的

于 2012-11-22T04:41:33.530 回答