如何根据mysql上字段的值进行连接
我的数据库中有一个用户表,有一个用户类型字段,它有0或1。如果值为0,我希望它与教师表联接,如果不是与学生表联接如何根据mysql上字段的值进行连接,sql,database,join,Sql,Database,Join,我的数据库中有一个用户表,有一个用户类型字段,它有0或1。如果值为0,我希望它与教师表联接,如果不是与学生表联接 可能吗 您也可以使用交叉应用或CTE,但由于您没有指定DB,因此使用它应该作为通用解决方案 Select t1.fields,t2.fields From user_table t1 LEFT JOIN teacher_table t2 ON t1.ID=t2.ID and t1.user_type_field=0 UNION ALL Select t1.fields,t2.fi
可能吗 您也可以使用交叉应用或CTE,但由于您没有指定DB,因此使用它应该作为通用解决方案
Select t1.fields,t2.fields
From user_table t1
LEFT JOIN teacher_table t2
ON t1.ID=t2.ID
and t1.user_type_field=0
UNION ALL
Select t1.fields,t2.fields
From user_table t1
LEFT JOIN student_table t2
ON t1.ID=t2.ID
and t1.user_type_field=1
您也可以使用交叉应用或CTE,但由于您没有指定DB,因此使用它应该作为通用解决方案
Select t1.fields,t2.fields
From user_table t1
LEFT JOIN teacher_table t2
ON t1.ID=t2.ID
and t1.user_type_field=0
UNION ALL
Select t1.fields,t2.fields
From user_table t1
LEFT JOIN student_table t2
ON t1.ID=t2.ID
and t1.user_type_field=1
为了便于理解,您完全可以在代码隐藏中完成这项工作。
例如,对该字段使用Enum。为了便于理解,您完全可以在代码隐藏中执行此操作。
例如,对该字段使用Enum。如果您的
教师
和用户
表具有相同的列,并且您不希望重复记录,请使用联合
而不是联合所有
Select *
From user_table u
LEFT JOIN teacher_table t
ON u.ID=t.ID
and u.user_type_field=0
UNION
Select *
From user_table u
LEFT JOIN student_table t
ON u.ID=t.ID
and u.user_type_field=1
将*
替换为选择时需要选择的任何字段
所有领域都可能严重影响你的表现
如果您的
teacher
和user
表具有相同的列,并且您不希望重复记录,请使用UNION
而不是UNION ALL
Select *
From user_table u
LEFT JOIN teacher_table t
ON u.ID=t.ID
and u.user_type_field=0
UNION
Select *
From user_table u
LEFT JOIN student_table t
ON u.ID=t.ID
and u.user_type_field=1
将*
替换为选择时需要选择的任何字段
所有领域都可能严重影响你的表现
如果不使用用户表
,您是否有两个用户表,或者希望它连接到自身?我希望它连接每个正确的表,如果不使用用户表
,您有两个用户表还是希望它连接到自身?我希望它连接到每个正确的表。这假设教师表
和学生表
具有相同的列数和相同的数据类型(因为它使用联合)这假设teacher\u表
和student\u表
具有相同的列数和数据类型(因为它使用联合)