Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
从两列中查找SQL中的唯一ID_Sql_Sql Server_Tsql - Fatal编程技术网

从两列中查找SQL中的唯一ID

从两列中查找SQL中的唯一ID,sql,sql-server,tsql,Sql,Sql Server,Tsql,查询我必须获取教师和学生ID Select lk.teacherID,lk.studentID from Teacher a inner join student b on a.classkey = b.classkey Teacher ID Student ID 123 678 123 876 123 987 456 459 456 789 我期待的最终结果:- 从两列中查找

查询我必须获取教师和学生ID

Select lk.teacherID,lk.studentID from Teacher a inner join student b 
on a.classkey = b.classkey

Teacher ID   Student ID
123            678
123            876
123            987
456            459
456            789
我期待的最终结果:- 从两列中查找SQL中的唯一ID

Unique IDs
123
678
876
987
456
459
789
这是你想要的吗

select t.teacherId
from teachers t
union
select s.studentId
from students s;
编辑:

对于澄清,只需使用
交叉应用

Select distinct id
from Teacher t inner join
     student s
     on t.classkey = s.classkey cross apply
     (values (t.teacherId), (s.studentId)) v(id);

无需对数据进行多次传递

如果对象_ID('tempdb...#temp','U')不为空 升降台#温度

嗯,,
Jason

不,我有上面的查询,先找到那些结果,现在从结果集中出来。我要的是上面提到的最终结果above@LearnAspNet . . . 我不知道你到底是什么意思。谢谢你的澄清。我不喜欢交叉应用连接,什么是最好的方式。有人补充的其他答案是有效的,但我认为这可能是性能问题@Gordon@LearnAspNet . . . 无论您是否喜欢交叉应用,横向连接都是SQL的重要组成部分,这应该是性能最好的方法。
Select lk.teacherID as UniqueIDs 
From(
Select lk.teacherID,lk.studentID from Teacher a inner join student b 
on a.classkey = b.classkey)a
GROUP By teacherID

Union all

Select lk.studentID as UniqueIDs From(
Select lk.teacherID,lk.studentID from Teacher a inner join student b 
on a.classkey = b.classkey)a
GROUP By studentID 
CREATE TABLE #temp (
    Teacher_ID int NOT NULL,
    Student_ID INT NOT NULL 
    );
INSERT #temp (Teacher_ID, Student_ID) VALUES 
    (123, 678),
    (123, 876),
    (123, 987),
    (456, 459),
    (456, 789);

--======================================

SELECT DISTINCT 
    UniqueID = x.ID
FROM 
    #temp t
    CROSS APPLY ( VALUES (t.Teacher_ID), (t.Student_ID) ) x (ID);