0 0

如何查询出一个表中的其中一个字段的值在另一个表中不存在的记录5

有两个表:

create table a(
   id VARCHAR(255) PRIMARY KEY,
   name CHAR(50)
);

create table b(
   id VARCHAR(255) referrence foreign key a(id),
   name CHAR(50)
)


问:如何查询出表a中id列的值在表b中不存在的记录.

目前我能想到的方法是:

SELECT
    *
FROM
    (
        SELECT
            a.*,
            b.id _id
        FROM
            a
        LEFT JOIN b
        WHERE
            a.id = b.id
    )
    t
WHERE
    t._id IS NULL;


有没有人能想到更好一点的方法? 请指教! 另外,我用的数据库是DB2.

问题补充:
kxys422834 写道
你欺负人吧。还能简单?都用了左连了。

就是因为用了左连,感觉复杂了,像是在绕圈子,应该有更简单的办法的.

问题补充:
gaojingsong 写道
select *   
from a A   
where  a.id not in( select b.id  from b B    )

这种方法只有一个外键关联的时候可以,但是有多个列关联的时候好像就不能用了.
2011年9月05日 17:02

4个答案 按时间排序 按投票排序

0 0

采纳的答案

select * 
from a A 
where not exists ( select 1 
                   from b B 
                   where A.id = B.id);

效率应该比你的高

2011年9月05日 17:52
0 0

DB2差集运算:EXCEPT、EXCEPT ALL

-- 求差集:A减B
SELECT * FROM A -- 集合A
EXCEPT                                         
SELECT * FROM B;-- 集合B
      

2011年9月05日 23:49
0 0

select *   
from a A   
where  a.id not in( select b.id  from b B    )

2011年9月05日 18:54
0 0

你欺负人吧。还能简单?都用了左连了。

2011年9月05日 17:46

相关推荐

    两个表中查询出不同的数据

    在两个表中,如果某条记录在其中一个表存在,但在另一个表中不存在,那么这条记录就是两个表之间的“不同”数据。在SQL中,有几种常见的方法来实现这样的查询: 1. **使用EXCEPT操作符**:在SQL标准中,可以使用...

    SQL查询字段被包含语句

    例如,如果我们有一个`ConnectName`表,其中`name`字段存储着联系人的姓名,我们可以使用以下查询来找出所有名字包含“小兰”或“灰原”的记录: ```sql SELECT * FROM ConnectName WHERE name LIKE '%小兰%' OR ...

    arcgis工具

    使用一个属性字段作为超链 在内容表中右击包含一个超链接字段的图层,然后点击properties ,单击Display选项卡。选中Supprt Hyper3. Hyperlinks using field选项,单击下拉箭头并点击一个字段。 单击Document or URL...

    外部关联表格的某一个字段的值来符号化一个图层

    3. **连接(Join)**:当图层的数据与另一个表中的数据存在关联时,可以通过连接操作将两个表关联起来,从而使得图层能够访问另一个表中的数据。 4. **符号化(Symbology)**:指的是如何使用颜色、图案等视觉元素来...

    设定Access数据库自增长字段初始值

    上述SQL语句创建了一个名为`tblNewOrder`的表,其中`OrderId`字段的初始值被设置为1000,每次增加10。 ##### 方法二:修改现有表的自增长字段初始值 如果表已经存在,可以通过`ALTER TABLE`语句来修改自增长字段的...

    完整版字段不重复.rar

    在IT领域,字段不重复性是一个重要的数据管理概念,尤其在数据库设计和数据清洗中扮演着关键角色。"完整版字段不重复.rar"这个压缩包文件可能包含一系列关于如何确保数据库字段唯一性的教程、工具或者示例数据。下面...

    设置db2 字段自增长

    在DB2中,可以定义一个触发器,在插入新记录时自动为特定字段分配一个递增的值。 ##### 3.2 创建触发器示例 下面是一个简单的触发器示例,用于实现`user`表中`id`字段的自增长: ```sql CREATE SEQUENCE user_id_...

    row_number,根据多个字段过滤,partition by

    现在我们需要从这些数据中找出那些在`name`、`idNumber`以及`date`这三个字段上存在重复的数据,并且每组重复数据只保留一条记录。 ### 2. 使用`ROW_NUMBER()`函数与`PARTITION BY`子句 为了实现上述需求,可以...

    易语言ACCESS数据库多表关联查询例程

    4. 全连接(FULL JOIN):返回两个表中所有匹配和不匹配的记录,如果在其中一个表中没有匹配项,则另一个表的对应字段值为NULL。 在易语言中,可以使用内置的数据库组件或第三方库来执行SQL查询。例如,使用...

    (3)Kettle-----关联字典表的三种方法

    在Kettle中,你可以创建一个值映射步骤,设置源字段和目标字段,然后逐一添加源值与目标值的对应关系。这种方法适用于规则固定且映射关系较少的情况。 2. 表输入(Table Input) 表输入方法更灵活,它允许你通过...

    批量去除空格(arcgis批量去除多个字段数据库中空格).zip

    4. **空格去除逻辑**:对于每个指定的字段,脚本会遍历其所有记录,使用字符串方法(如`replace()`)来替换字段值中的空格。这个过程可能涉及到循环和条件判断,确保只处理包含空格的字段值。 5. **数据写回**:...

    SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

    假设我们有一个`people`表,其中`peopleId`字段可能存在重复值。查询重复记录可以使用以下语句: ```sql -- 查找重复的peopleId SELECT * FROM people WHERE peopleId IN ( SELECT peopleId FROM people GROUP BY ...

    java计算同一个list中是否有相同的值

    在 Java 编程中,判断一个 `List` 中是否存在重复元素是一项常见的需求。特别是在数据处理、验证或分析等场景中,确保数据的唯一性对于维持数据完整性至关重要。 #### 核心概念解析 在给定的代码片段中,作者提供...

    第9讲表关联与多表查询[参考].pdf

    在查询多个表时,至少需要N-1个相等条件来连接N个表,并确保每个表的公共字段至少出现一次。如果未指定关联条件,查询结果将产生笛卡尔积,即每个表的记录与其它所有表的记录进行组合,这通常不是我们想要的结果。 ...

    判断指定数据库中是否存在指定的表

    方法返回一个布尔值,表示指定的表是否存在于指定的数据库中。 1. **数据库连接**: - 使用`myConnectionString`建立与SQL Server的连接。这里调用了自定义的帮助类方法`myUGADBHelp.ConnDB`来创建`SqlConnection`...

    明细表下拉框自动赋值

    否则,记录上一个存在的元素的值,并退出循环。 #### 3.4 超时机制 如果循环没有自然结束,而是达到了某个时间阈值(例如100毫秒),则会触发超时机制,通过`setTimeout`函数重新启动循环,确保不会无限循环下去。...

    Oracle字段根据逗号分割查询数据的方法

    在Oracle数据库中,有时我们遇到一个特殊的查询需求,即字段中的值是以逗号分隔的字符串,我们需要根据每个单独的值来查询数据。在这种情况下,简单的`LIKE`查询无法满足需求,因为`LIKE`通常用于匹配模式,而不是...

    ARCGIS按字段属性输出文件

    例如,假设你有一个包含城市建筑的要素类,其中有一个字段"用途",记录了每个建筑的用途(如住宅、商业、办公等)。你可以利用ARCGIS的这个工具,按照"用途"字段的值,将所有住宅建筑、商业建筑和办公建筑分别导出为...

    Django ORM 查询表中某列字段值的方法

    在Django中,查询表中某列字段值有多种方法: **方式一**:使用`values()`方法。例如,如果你有一个名为`Event`的模型,且其有一个`title`字段,你可以通过以下代码获取所有`title`的值: ```python Event.objects....

    MySQL大表中重复字段的高效率查询方法

    数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较。如果仅仅是查找数据库中name不重复的字段,很容易 代码如下:SELECT min(`id`),`name` FROM `table` GROUP BY `name`; 但是这样并不能得到说有重复...

Global site tag (gtag.js) - Google Analytics