Sql server SQL SERVER(内部联接上)
如何连接两个表,一个表有多个值,在一列中用逗号分隔,另一列只有一个值……如Sql server SQL SERVER(内部联接上),sql-server,Sql Server,如何连接两个表,一个表有多个值,在一列中用逗号分隔,另一列只有一个值……如 1st table 2nd table name course course name course id Tanisha 1,2,3 Cisco 1 Ellen 3,4,5
1st table 2nd table
name course course name course id
Tanisha 1,2,3 Cisco 1
Ellen 3,4,5 c++ 2
honesty 4,2,1 server 3
java 4
dot net 5
您可以像一样使用
连接表:
select *
from table1 t1 join
table2 t2
on ',' + t1.course + ',' like '%,'' + cast(t2.courseid as varchar(255)) + ',%';
实际上,这是一个可怕的数据结构。它将数字ID存储在字符串字段中。它将列表存储在逗号分隔的字段中。引擎无法利用基本查询的索引,例如上面的查询。关系数据库有很好的列表数据结构;它叫桌子。在这种情况下,该表将是一个连接表
有时,您不得不接受其他人创建的数据格式。如果无法重新构造数据,有时SQL功能强大,仍然可以让您完成所需的操作。您可以使用之类的方法加入表:
select *
from table1 t1 join
table2 t2
on ',' + t1.course + ',' like '%,'' + cast(t2.courseid as varchar(255)) + ',%';
实际上,这是一个可怕的数据结构。它将数字ID存储在字符串字段中。它将列表存储在逗号分隔的字段中。引擎无法利用基本查询的索引,例如上面的查询。关系数据库有很好的列表数据结构;它叫桌子。在这种情况下,该表将是一个连接表
有时,您不得不接受其他人创建的数据格式。如果无法重新构造数据,有时SQL功能强大,仍然可以让您完成所需的操作。您可以使用之类的方法加入表:
select *
from table1 t1 join
table2 t2
on ',' + t1.course + ',' like '%,'' + cast(t2.courseid as varchar(255)) + ',%';
实际上,这是一个可怕的数据结构。它将数字ID存储在字符串字段中。它将列表存储在逗号分隔的字段中。引擎无法利用基本查询的索引,例如上面的查询。关系数据库有很好的列表数据结构;它叫桌子。在这种情况下,该表将是一个连接表
有时,您不得不接受其他人创建的数据格式。如果无法重新构造数据,有时SQL功能强大,仍然可以让您完成所需的操作。您可以使用之类的方法加入表:
select *
from table1 t1 join
table2 t2
on ',' + t1.course + ',' like '%,'' + cast(t2.courseid as varchar(255)) + ',%';
实际上,这是一个可怕的数据结构。它将数字ID存储在字符串字段中。它将列表存储在逗号分隔的字段中。引擎无法利用基本查询的索引,例如上面的查询。关系数据库有很好的列表数据结构;它叫桌子。在这种情况下,该表将是一个连接表
有时,您不得不接受其他人创建的数据格式。如果您无法重新构造数据,有时SQL功能强大,仍然可以让您完成所需的操作。您应该正确重新设计此功能。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然这是一个很容易回答的问题。您应该正确地重新设计它。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然这是一个很容易回答的问题。您应该正确地重新设计它。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然这是一个很容易回答的问题。您应该正确地重新设计它。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然间,这是一个很容易回答的问题。