SQL返回包含一列的重复行

时间:2016-06-23 22:49:50

标签: c# sql

我正在寻找一些简单的sql来转换一个简单的sql查询,它将返回一些像这样的列值

select ab,cd,ef,gh from alphabets 

返回我

ab  cd  ef  gh
--------------
a   b   c   d

我真正想要的是在这个查询中附加一些内容,它会返回相同的记录,但会返回一定数量的不同值。

ab  cd  ef  gh
--------------
a   b   x    d
a   b   y    d
a   b   z    d

感谢任何帮助或指导。

P.S。如果有人能够在c#中展示如何使用sql映射到对象也会很有用。谢谢很多。

2 个答案:

答案 0 :(得分:1)

好吧,这里有一些SQL魔法。

declare @alphabets table (ab varchar, cd varchar, ef varchar, gh varchar)
insert @alphabets values ('a', 'b', 'c', 'd')

select a.ab, a.cd, xyz.ef, a.gh
from 
    @alphabets a,
    (select 'x' ef union all 
     select 'y' ef union all
     select 'z' ef ) xyz

这只是使用(隐式)交叉连接来获取单个@alphabets行和三个xyz行的笛卡尔积。

答案 1 :(得分:1)

您没有说明价值观' x',' y'和' z'来自,但通常这将来自另一个表。在这种情况下,让我们创建另一个表并以第二个表中的每一行与您描述的表中的同一行连接的方式连接它们:

DECLARE @Table1 TABLE (ab varchar(1), cd varchar(1), ef varchar(1), gh varchar(1))
INSERT INTO @Table1 VALUES ('a', 'b', 'c', 'd')

DECLARE @Table2 TABLE (zz varchar(1))
INSERT INTO @Table2 VALUES ('x'),('y'),('z')

SELECT ab, cd, ef, zz 
FROM @Table1 T1
INNER JOIN @Table2 T2 ON 1=1

结果:

ab | cd | ef | zz
-----------------
a  | b  | c  | x
a  | b  | c  | y
a  | b  | c  | z