是否可以使用" WHERE"子句选择SQL语句中的所有记录?

时间:2013-10-17 11:19:51

标签: java mysql sql sql-server

晚上好,我很好奇是否可以在可以显示所有记录的SQL语句中创建WHERE子句?

下面是一些解释:

  

随机SQL语句( Java ) - ( JSP示例),正常情况

String SqlStatement = "SELECT * FROM table_example WHERE First_Col = '<%=passVar%>' ";
db.query(SqlStatement );
//........
//........

如果 passVar 为'ALL',我们需要在 passVar =全部时提示所有记录?我知道我可以使用if-else来检查 passVar 是否为“ALL”然后查询 without-WHERE语句以使其正常工作..

**without-WHERE statement (Java)-(JSP example)**
if(<%=passVar%> == "ALL") {
   SqlStatement = "SELECT * FROM table_example";
} else {

   SqlStatement = "SELECT * FROM table_example WHERE First_Col = '<%=passVar%>' ";
}

但我可以只编写一个SQL语句来提示所有记录吗?如下所示:

  

Java ) - ( JSP示例

String ShowAll = "";
if(<%=passVar%> == "ALL") {
    ShowAll = *;

} else {
    ShowAll = <%=passVar%>;
}
SqlStatement = "SELECT * FROM table_example WHERE First_Col = ShowAll ";

8 个答案:

答案 0 :(得分:9)

尝试使用WHERE 1=1 ::

Select * from myTable  WHERE 1=1

答案 1 :(得分:2)

其中1 = 1对我有用,尽管使用了where子句,但选择了所有记录。

您也可以尝试

SELECT * FROM Customers
WHERE CustomerID=CustomerID; /* query */

或 [any_column_name] = [column_name_in_LHL]

(LHL =左侧)。

复制查询并 click here to try code

答案 2 :(得分:1)

考虑在查询本身内移动特殊情况,例如

SELECT * FROM table_example WHERE '<%=passVar%>' IN ('ALL', First_Col)

答案 3 :(得分:1)

这也有效:

WHERE columnname LIKE '%'

除了NULL值。

答案 4 :(得分:0)

尝试使用通配符值'%'但是我建议在这里使用Factory来创建SQL语句,你试图做些什么。

答案 5 :(得分:0)

您可以做的其他事情是将代码和SQL的组合作为单个查询。这意味着IF..ELSE将采用SQL语言。

查看这些链接以获取更多信息:
MySQL
Using If else in SQL Select statement

答案 6 :(得分:0)

最好区分两种情况,并从中进行2次查询。

  • 如果没有where条件,则DB不需要对其进行评估(可能更快)
  • 源代码/调试输出更清晰。

答案 7 :(得分:-1)

在sqlserver上,您可以执行proc:

create proc select_all_on_null
@a int
as
begin
  select * from Records where (@a is null or Record_id=@a )
end

当您选择自己的程序时:

make @a in null will select all 

如果我是numder,则会选择具有该ID的行