Php 使用if条件选择mysql

Php 使用if条件选择mysql,php,mysql,laravel,function,Php,Mysql,Laravel,Function,我在Mysql中有一个函数,叫做: DB::raw("count_adults(rooms.id) as adults"), SELECT count(*) INTO adults FROM client_room, clients WHERE client_id = clients.id and client_room.room_id = r_id and (age >18 or age = 0) IF EXISTS (SELECT 1 FROM clients

我在Mysql中有一个函数,叫做:

  DB::raw("count_adults(rooms.id) as adults"),
   SELECT count(*) INTO adults  FROM client_room, clients    
WHERE client_id = clients.id and client_room.room_id = r_id and (age >18 or age = 0)
IF EXISTS (SELECT 1 FROM clients WHERE clients.room_id = r_id) 


BEGIN

DECLARE adults INT;

    SELECT  
        count(*) INTO adults 
    FROM 
        clients 
    WHERE 
        clients.room_id = r_id 
        and (age >= 18 
        or age = 0);

   RETURN adults;
END
ELSE 

BEGIN
DECLARE adults INT;
SELECT count(*) INTO adults 
FROM 
client_room, clients
WHERE 
client_id = clients.id and client_room.room_id = r_id 
and (age >18 
or age = 0);

END
伯爵大人是这样的:

BEGIN

 DECLARE adults INT;

    SELECT  
     count(*) INTO adults 
    FROM 
     clients 
    WHERE 
     clients.room_id = r_id 
        and (age >= 18 
        or age = 0);
            RETURN adults;
    END
但是,如果此查询未返回任何结果(0),我希望执行另一个select或函数,如下所示:

  DB::raw("count_adults(rooms.id) as adults"),
   SELECT count(*) INTO adults  FROM client_room, clients    
WHERE client_id = clients.id and client_room.room_id = r_id and (age >18 or age = 0)
IF EXISTS (SELECT 1 FROM clients WHERE clients.room_id = r_id) 


BEGIN

DECLARE adults INT;

    SELECT  
        count(*) INTO adults 
    FROM 
        clients 
    WHERE 
        clients.room_id = r_id 
        and (age >= 18 
        or age = 0);

   RETURN adults;
END
ELSE 

BEGIN
DECLARE adults INT;
SELECT count(*) INTO adults 
FROM 
client_room, clients
WHERE 
client_id = clients.id and client_room.room_id = r_id 
and (age >18 
or age = 0);

END
我可以创建一个if条件吗?在php代码中?还是在查询中?大概是这样的:

  DB::raw("count_adults(rooms.id) as adults"),
   SELECT count(*) INTO adults  FROM client_room, clients    
WHERE client_id = clients.id and client_room.room_id = r_id and (age >18 or age = 0)
IF EXISTS (SELECT 1 FROM clients WHERE clients.room_id = r_id) 


BEGIN

DECLARE adults INT;

    SELECT  
        count(*) INTO adults 
    FROM 
        clients 
    WHERE 
        clients.room_id = r_id 
        and (age >= 18 
        or age = 0);

   RETURN adults;
END
ELSE 

BEGIN
DECLARE adults INT;
SELECT count(*) INTO adults 
FROM 
client_room, clients
WHERE 
client_id = clients.id and client_room.room_id = r_id 
and (age >18 
or age = 0);

END
我已经试过了,它似乎很管用:

BEGIN

 DECLARE adults INT;

    SELECT COUNT(*) INTO adults
    FROM clients
    WHERE clients.room_id = r_id
     and (age >= 18 or age = 0);

    RETURN IF( adults>0, adults, (SELECT count(*) FROM client_room, clients
         WHERE client_id = clients.id
         and client_room.room_id = r_id)
             );

   END
您可以在查询中使用,例如:

CASE
  WHEN function1() > 0
    THEN function1()
  WHEN function2() > 0
    THEN function2()
  ELSE
    0
END
如果大于0,则将计算为从
function1()
返回的值。如果不是,但
function2()
返回的值大于0,则取该值。否则是0


可以使用列、子查询(即,如果返回标量)、文本等,而不是
function1()
function2()
等。当然,它可以更改为或多或少的条件。

这将类似于:当count\u adulst1()>0时开始CASE,然后当count\u adulst1()>0时开始CASE,然后count\u adulst1()否则0结束,在php中,我将调用这个有CASE的函数,比如:检查成员?@Mary:就我理解你的要求而言,
CASE
在我看来是正确的。我不知道你调用“this function”是什么意思,因为从技术上讲,查询不是PHP函数。。。将
大小写
放在查询中需要计数的地方。比方说,如果您的查询是
从表中选择count_成人()将“count_成人()”替换为您的
案例
。并在PHP中使用结果查询,就像使用原始查询一样。希望有帮助。