无论如何在c#中从2个不同的查询返回数据表中的相同数据?

时间:2017-01-25 08:39:00

标签: mysql sql

我需要一些关于我正在做的Web应用程序的帮助。我需要将整个数据从A组复制到同一数据库表中的B组。但是,存在数据相同的情况。这是我的数据库表的一个例子

display

从上面的示例中,您可以看到 Alpha Bravo 两者具有相同的确切年龄,并且它们同时存在于A组和A组中。 B.

我的问题是,是否可以检查在A组和A组中找到的具有相同名称和年龄的重复数据。 B使用查询?我想先找出哪些数据是相同的,这样我就可以删除B组中的重复 ONLY ,同时保持 Delta 的数据相同

我很新鲜&对SQL无能为力,因为我不知道任何类型的SQL可以检查A组和A组中的重复数据。乙

我希望你们能给我一个信息丰富的解释&回答我遇到的问题

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

PostgreSQL中的一个例子。使用duplicate_id_list,您可以获得重复的ID。您可以在删除查询中使用它来删除列表中第一个ID以外的所有内容。

SELECT Name,Age,count(id),string_agg(id, ', ') AS duplicate_id_list FROM
yourtable GROUP BY Name,Age having count(*) > 1

答案 1 :(得分:1)

您可以group bycount一起使用以获取多个组中存在的所有名称 - 年龄组合,例如:

SELECT name, age, COUNT(DISTINCT `group`) AS groups
FROM test
GROUP BY name, age
HAVING groups > 1;

以下是 SQL Fiddle

答案 2 :(得分:1)

要查找B组的重复ID,请执行内部自连接,如下所示:

SELECT tb.id
    FROM YourTable AS ta
    JOIN YourTable AS tb ON ta.name=tb.name AND ta.age=tb.age
    WHERE ta.group='A'
    AND tb.group='B'

您可以在删除中使用它,只会根据需要从B组中删除重复的记录:

DELETE YourTable
    WHERE id IN (
        SELECT tb.id
        FROM YourTable AS ta
        JOIN YourTable AS tb ON ta.name=tb.name AND ta.age=tb.age
        WHERE ta.group='A'
        AND tb.group='B')