如何使用field =使条件始终为真?

时间:2019-05-31 02:47:30

标签: mysql sql

我下面有一条sql语句:

select * from table where id = ?

现在,问题是,我不知道前端是否会向我发送id的值,如果是,则此sql看起来像id = 1,否则,sql应该像{{1} }(伪代码)查找所有数据

我怎么写我的sql?

或者,从根本上说是错误的吗?

3 个答案:

答案 0 :(得分:1)

通常使用以下逻辑来处理:

select *
from table
where id = ? or ? is null;

如果您不想两次传递参数或使用命名参数:

select t.*
from table t cross join
     (select ? as param) params
where id = params.param or params.param is null;

如果要传递的值不存在,则要返回所有id:

select t.*
from table t
where id = ? or 
      not exists (select 1 from table t2 where t2.id = ?);

答案 1 :(得分:0)

您可以尝试在代码中执行操作,编写一个用于提取特定记录的函数,以及另一个用于从表中提取所有记录的函数。

在PHP中,可能类似于:

// Fetching a specific record
function getCustomerRecord($customerId) {
     // Code to fetch specific record from database
}


// Fetching all records
function getAllCustomerRecords() {
     // Code to fetch all records from database
}

在处理收到的请求的函数中,首先检查是否传递了id值。如果传递了id的值,请调用该函数以获取特定记录,并确保传递您作为参数收到的值。否则,调用该函数以从表中获取所有记录。

答案 2 :(得分:0)

您可以尝试执行此操作以在PHP中获得正确的sql语句

 function GetSqlStatement($id){
       return $sql = "select * from table where id = ".$id.";";
 }