c# - MySQL - 提取表中存在但另一个表中不存在的记录

标签 c# mysql

我知道这个问题已经被问过很多次了。 问题是其他解决方案不起作用.. 我尝试了以下方法:

SELECT ID FROM TABLE_1 AS T1 WHERE NOT EXISTS (SELECT COLUMN_1,COLUMN_2 FROM TABLE_2 AS T2 WHERE T1.COLUMN_1 = T2.COLUMNS_1 AND T1.COLUMN_2 = T2.COLUMN_2);

无论是从工作台还是从代码(我使用的是 Visual Studio 2013 C#),它总是超时。 我不知道如何使查询更容易以使其工作..也许将其分成 2..

示例:

Table 1                                   Table 2
ID COLUMN_1 COLUMN_2                      ID COLUMN_1 COLUMN_2
1  0        1                             1  0        1
2  0        1                             2  0        1
3  0        1                             3  0        1
4  1        2                            
5  1        2                             
6  1        2                             

它应该返回

1 2

或者也只有 ID (2)。

最佳答案

SELECT 
     Table_1.ID 
    ,Table_1.COLUMN_1 
    ,Table_1.COLUMN_2 
FROM Table_1 

LEFT JOIN Table_2
    ON Table_1.ID = Table_2.ID
    AND Table_1.COLUMN_1 = Table_2.COLUMN_1
    AND Table_1.COLUMN_2 = Table_2.COLUMN_2

WHERE Table_2.ID  IS NULL 

编辑:
好吧,如果不需要匹配 id,那么很简单:

SELECT 
     Table_1.ID 
    ,Table_1.COLUMN_1 
    ,Table_1.COLUMN_2 
FROM Table_1 

LEFT JOIN Table_2
    ON Table_2.COLUMN_1 = Table_1.COLUMN_1
    AND Table_2.COLUMN_2 = Table_1.COLUMN_2

WHERE Table_2.ID  IS NULL 

如果这仍然太慢,也许索引可以提供帮助。 如果索引没有帮助,您仍然可以增加命令 timeout .

不过,另一种选择是:

SELECT 
     Table_1.ID 
    ,Table_1.COLUMN_1 
    ,Table_1.COLUMN_2 
FROM Table_1 
WHERE 
(COLUMN_1, COLUMN_2) NOT IN (SELECT COLUMN_1, COLUMN_2 FROM Table_2)

关于c# - MySQL - 提取表中存在但另一个表中不存在的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25008920/

相关文章:

c# - ValueTuple 在带有 MVC 5 的 Razor View 中不起作用

c# - Write-Host -ForegroundColor Green 等效于 C# 中的 PSCmdlet

mysql - 如何编写一个 MySQL 查询来限制一个或多个连接表的结果,并计算连接表中的项目数?

mysql - 多查询 SQL 压缩为一个结果

php - 在 PHP 中从远程数据库检索数据时出错

c# - 无法在我的网络服务中使用公共(public)类(class)

c# - 在 VS 2012 中分析

c# - 重新设计 WPF 扩展工具包的 ChildWindow

php - 查找 sql 值最新变化的更好方法

c# - 如何从 MVC Razor 中的两个表返回带有外部连接的 View