有条件的joinmysql
我有一个表id1
, id2
, type
。 type
是包含另一个表的名称的枚举值。 我想用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条件连接示例