使用where子句获取所有结果

时间:2012-07-27 06:19:24

标签: mysql sql

我有一个函数,它接受在whe​​re子句

中使用的参数

function(string x) - >现在这将创建一个提供

的sql查询
select colname from tablename where columnname=x;

现在我想让这个函数给出所有行,即查询等效于

select colname from tablename;

当我通过x =“全部”时。

我想创建一个通用查询,当我传递“All”时,它应该返回我所有的行,否则过滤我的结果。

9 个答案:

答案 0 :(得分:10)

离开那里的条件。

如果你真的想要那么复杂的使用

where columnname LIKE '%'

只会过滤空值。

答案 1 :(得分:6)

select colname from tablename 
where columnname=(case when @x ="All" then columnname
                  else  @x end)

答案 2 :(得分:2)

试试这个

select colname from tablename where 1=1

希望以上内容能够发挥作用

答案 3 :(得分:1)

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

您也可以尝试

[any_column_name] = [column_name_in_LHL]

(LHL =左侧)。

refer my answer for more details

答案 4 :(得分:0)

如果必须允许'ALL'作为参数值传递给函数,那么您需要在函数中放置一些操作代码来相应地构造SELECT语句。即您可以检测参数中是否包含“ALL”,然后从SQL语句中省略WHERE子句。如果“ALL”以外的值通过,则可以包含WHERE子句以及参数中的相关过滤器值。

执行此操作的一段代码示例是

IF x = 'ALL'
THEN
   SELECT COLNAME FROM TABLENAME;
ELSE
   SELECT COLNAME FROM TABLENAME WHERE COLUMNNAME = X;
END IF;

答案 5 :(得分:0)

目前还不清楚你的函数使用的语言是什么,但在获取sql之前你必须以某种方式解析'All':

public void query(String param) {
  String value = "":
  switch (param) {
    case 'All':
      value = "*";
      break;
    default:
      value = param;
  }
  String sql = "select colname from tablename where colname="+value;
  //make the query
}

答案 6 :(得分:0)

对代码进行条件检查(假设Java)仅在WHERE

时附加x != 'All'子句
mySqlQuery = "SELECT colname FROM tablename" + 
                (x.equals("All") ? "" : "WHERE columnname = "+x);

答案 7 :(得分:0)

前段时间我遇到了同样的问题,这个解决方案对我有用

select colname from tablename where columnname=x or x = 'ALL'

答案 8 :(得分:0)

SELECT * FROM table_name WHERE 1;
SELECT * FROM table_name WHERE 2;
SELECT * FROM table_name WHERE 1 = 1;
SELECT * FROM table_name WHERE true;

以上任何查询都会返回表中的所有记录。 在必须将条件作为参数传递的Node.js中,我像这样使用它。

const queryoptions = req.query.id!=null?{id : req.query.id } : true;
let query = 'SELECT * FROM table_name WHERE ?';
db.query(query,queryoptions,(err,result)=>{
res.send(result);
}