2013-11-14 28 views
0

我需要修改存儲過程,需要根據CALL中提供的bool值加入特定表。MySQL條件連接使用CASE stmt

這是可能的在MySQL中。下面的一般語法是不是爲我工作:

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

回答

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; 
1

什麼你想做的事簡單說就是:

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