MySQL条件JOIN使用CASE Stmt

时间:2013-11-14 19:59:03

标签: mysql stored-procedures case

我需要根据CALL中提供的bool值修改需要加入特定表的存储过程。

这在MySQL中是否可行。下面的一般语法对我不起作用:

select...
from table_one t1
case 1=1 join table_two on t1.id = t2.id end;

2 个答案:

答案 0 :(得分:1)

您想要做的只是:

SELECT * 
FROM table_one as t1
LEFT JOIN table_two t2 ON (t2.id = t1.id AND 1=1)

答案 1 :(得分:0)

你不应该做这样的事情:

-- dummy procedure
CREATE PROCEDURE get_result(IN id int(11))
  SELECT t1.* FROM table_one t1 
  INNER JOIN table_two t2 ON IF(id = 1, 1, 0) && t2.id = t1.id

要根据发送到过程的参数执行不同的查询,您还可以执行:

-- dummy procedure
CREATE PROCEDURE get_result(IN id int(11))
  BEGIN
    CASE id 
    -- if supplied argument is equal to '1' select all fields from table_one
    WHEN 1 THEN SELECT * FROM table_one;
    -- else select all fields from table_one & table_two
    ELSE SELECT t1.*, t2.* FROM table_one t1 INNER JOIN table_two t2 ON t2.id = t1.id
    END CASE;
  END;