如何使用c#或sql将两列合并为一列

时间:2015-10-30 06:58:45

标签: c# mysql c#-4.0 asp.net-mvc-5

抱歉,我真的是编程的新手,我正在尝试使用sql将两个不同的列合并到一个列中,但如果不可能,可以使用c#中的sql代码完成吗? 我有两个表Product1和Product2,这些表都有CatID。

对于Product1,CatID包含

  

1
  2
  3

对于Product2,CatID包含

  

1
  2
  3
  4
  5

我使用union获得的结果是,如果它们具有相似的id,它将合并为一个并使用concat将复制到类似

  

1 1
  2 2
  3 3
    4
    5

但我想要的结果是1到3来自product1,然后是product2中的4到8,就像它会继续计数而没有重复:

  

1
  2
  3
  4
  5
  6
  7
  8

这可能吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试此查询,使用union

select * from Product1
union
select * from Product2 NOT IN(SELECT CatID FROM Product1)

答案 1 :(得分:0)

我不确定你想要什么,但是使用LINQ你可以创建一个选择。如果您向我们展示SQL代码,那将非常有用。

答案 2 :(得分:0)

试试这样:

SELECT CatID, ...OtherColumns...
FROM Product1
UNION SELECT CatID, ...OtherColumns...
FROM Product2
WHERE Product2.CatID NOT IN(SELECT CatID FROM Product1)
ORDER BY CatID

(在此测试:http://sqlfiddle.com/#!9/7887c):

CREATE TABLE T1(ID INT, txt VARCHAR(10));
INSERT INTO T1 SELECT 1, 'test A'
        UNION  SELECT 2, 'test B'
        UNION  SELECT 3, 'test C';

CREATE TABLE T2(ID INT, txt VARCHAR(10));
INSERT INTO T2 SELECT 1, 'test 1'
        UNION  SELECT 2, 'test 2'
        UNION  SELECT 3, 'test 3' 
        UNION  SELECT 4, 'test 4'        
        UNION  SELECT 5, 'test 5';

SELECT ID, txt
FROM T1
UNION SELECT ID, txt
FROM T2
WHERE T2.ID NOT IN(SELECT ID FROM T1)
ORDER BY ID

结果:

ID  txt
1   test A
2   test B
3   test C
4   test 4
5   test 5