Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据mysql上字段的值进行连接_Sql_Database_Join - Fatal编程技术网

如何根据mysql上字段的值进行连接

如何根据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

我的数据库中有一个用户表,有一个用户类型字段,它有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.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表
具有相同的列数和数据类型(因为它使用联合)