有条件的joinmysql

我有一个表id1id2typetype是包含另一个表的名称的枚举值。 我想用type表的名字进行join 。 例如:

 switch($type) case 'table1': join table1; break; case 'table2': join table2; break; 

我怎样才能做到这一点?

你不能直接这样做…你可以做这样的事情虽然(不是很漂亮…):

 SELECT t.id, t.type, t2.id AS id2, t3.id AS id3 FROM t LEFT JOIN t2 ON t2.id = t.id AND t.type = 't2' LEFT JOIN t3 ON t3.id = t.id AND t.type = 't3' 

丑陋的方式:

表types,T1,T2:

 SELECT ... FROM Types, T1 , where Types.ID=T1.Types_ID AND Types.TYPE='TABLE1' UNION SELECT ... FROM Types, T2 , where Types.ID=T2.Types_ID AND Types.TYPE='TABLE2' 

除了以前的答案:可以通过使用IF语句将两个左连接结果组合起来:IF(t.type ='t2',t2.id,t3.id)作为type_id

您可以在mysqldiary.com上看到另一个mysql条件连接示例