SQL 如何 select 来自多个字段的不同值
SQL How to select distinct value from multiple fields
在(导师资料)数据库中,每位导师最多可以教授 3 个科目,因此我创建了 3 个字段--Subject1
、Subject2
和 Subject3
- - 对于每个导师。就我而言,我想检索 3 个字段中的每个特定主题,并将它们添加到我的程序中的组合框中,以实现条件搜索功能。
最初,我对 3 个不同的字段使用了以下代码:
Dim sqlSubjectComboBox As String = "SELECT DISTINCT [TutorSubject1] FROM tblTutor"
Dim cmdSubjectComboBox As New OleDbCommand(sqlSubjectComboBox, myConnection)
dr = cmdSubjectComboBox.ExecuteReader
While dr.Read()
cbSubject.Items.Add(dr("TutorSubject1").ToString)
End While
但是,我意识到如果同一科目被不同的导师放在不同的领域,这个sql语句会产生逻辑错误。
例如:导师 A 在他的字段 Subject1
上有主题 'Chemistry'。而对于导师 B,他在字段 Subject2
上有相同的主题 'Chemistry'。最后,组合框有两个 'Chemistry'.
我花了将近一天的时间来解决这个问题,但还是有用,部分原因是我的编程技能不佳且缺乏经验。希望有人能帮助我,在此先感谢!
您可以使用 UNION 运算符来获取不同的主题列表。
select TutorSubject1 FROM tblTutor where TutorSubject1 is not null
union
select TutorSubject2 FROM tblTutor where TutorSubject2 is not null
union
select TutorSubject3 FROM tblTutor where TutorSubject3 is not null
这里的重点是 UNION 运算符删除重复项。
在(导师资料)数据库中,每位导师最多可以教授 3 个科目,因此我创建了 3 个字段--Subject1
、Subject2
和 Subject3
- - 对于每个导师。就我而言,我想检索 3 个字段中的每个特定主题,并将它们添加到我的程序中的组合框中,以实现条件搜索功能。
最初,我对 3 个不同的字段使用了以下代码:
Dim sqlSubjectComboBox As String = "SELECT DISTINCT [TutorSubject1] FROM tblTutor"
Dim cmdSubjectComboBox As New OleDbCommand(sqlSubjectComboBox, myConnection)
dr = cmdSubjectComboBox.ExecuteReader
While dr.Read()
cbSubject.Items.Add(dr("TutorSubject1").ToString)
End While
但是,我意识到如果同一科目被不同的导师放在不同的领域,这个sql语句会产生逻辑错误。
例如:导师 A 在他的字段 Subject1
上有主题 'Chemistry'。而对于导师 B,他在字段 Subject2
上有相同的主题 'Chemistry'。最后,组合框有两个 'Chemistry'.
我花了将近一天的时间来解决这个问题,但还是有用,部分原因是我的编程技能不佳且缺乏经验。希望有人能帮助我,在此先感谢!
您可以使用 UNION 运算符来获取不同的主题列表。
select TutorSubject1 FROM tblTutor where TutorSubject1 is not null
union
select TutorSubject2 FROM tblTutor where TutorSubject2 is not null
union
select TutorSubject3 FROM tblTutor where TutorSubject3 is not null
这里的重点是 UNION 运算符删除重复项。