如何使用单个SQL查询来选择单个客户或所有客户?

时间:2017-08-22 23:23:16

标签: mysql sql

我正在为我的公司撰写报告。该报告将能够选择特定客户或所有客户。

我有2个查询

Select *
from customers

Select *
from customers
where id = @customer_id

如何通过单个SQL查询选择特定客户或所有客户?

我试过了,但它给了我错误。

select *
from customers
where id in ( case when @customer_id > 0 Then @customer_id else (select id from customers ) end)

4 个答案:

答案 0 :(得分:1)

你可以使用这样的技巧:

select * from customers where id=@customer_id or @customer_id=0

答案 1 :(得分:0)

此查询将获得您想要的结果

select * from customers where @customer_id IS NULL OR id=@customer_id 

答案 2 :(得分:0)

我目前没有安装服务器进行测试,但我认为我之前使用以下方法已经实现了这种逻辑。您在where子句中使用CASE语句的尝试是无效的。相反,我已经在每种情况下通过外部查询包装所需的查询,允许在选择器中使用CASE语句(像往常一样)。

同样,我无法对此进行测试,因此可能需要进行一些细微的修改。

       $('#start_date').datepicker({
            orientation: "bottom auto",
            autoclose: true,
            todayHighlight: true,
            useCurrent: false
        }).mask("99/99/9999");

        $('#end_date').datepicker({
            orientation: "bottom auto",
            autoclose: true,
            todayHighlight: true,
            useCurrent: false
        }).mask("99/99/9999");

答案 3 :(得分:0)

您可以在sql中使用函数;

 DROP FUNCTION IF EXISTS showCustomer
    CREATE FUNCTION showCustomer (Id int)
    RETURNS TABLE
    AS 
    BEGIN
     IF Id = -1 
       RETURN (SELECT * from customers)
     ELSE 
       RETURN (SELECT * from customers where customers.id=id )
     END
   END