0
我需要修改存储过程,需要根据CALL中提供的bool值加入特定表。MySQL条件连接使用CASE stmt
这是可能的在MySQL中。下面的一般语法是不是为我工作:
select...
from table_one t1
case 1=1 join table_two on t1.id = t2.id end;
我需要修改存储过程,需要根据CALL中提供的bool值加入特定表。MySQL条件连接使用CASE stmt
这是可能的在MySQL中。下面的一般语法是不是为我工作:
select...
from table_one t1
case 1=1 join table_two on t1.id = t2.id end;
你不应该能够做这样的事情:
-- 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;
什么你想做的事简单说就是:
SELECT *
FROM table_one as t1
LEFT JOIN table_two t2 ON (t2.id = t1.id AND 1=1)