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功能强大,仍然可以让您完成所需的操作。

您应该正确重新设计此功能。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:
连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然这是一个很容易回答的问题。您应该正确地重新设计它。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:
连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然这是一个很容易回答的问题。您应该正确地重新设计它。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:
连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然这是一个很容易回答的问题。您应该正确地重新设计它。使用一些函数来规范课程字段中的数据,然后以正常方式加入。如果你想解决你的问题,看看这个问题:
连接的结果是什么?
?单个列中逗号分隔的数据是一个巨大的反模式。模式设计有缺陷。修复它,使其不再发生,突然间,这是一个很容易回答的问题。