使用MS Access的Sql连接查询
您好,我在比较两个表之后从一个表中获取行时遇到问题。两个表的详细信息如下:- 我正在使用Ms Access数据库使用MS Access的Sql连接查询,sql,ms-access,Sql,Ms Access,您好,我在比较两个表之后从一个表中获取行时遇到问题。两个表的详细信息如下:- 我正在使用Ms Access数据库 TableA is having a data of numeric type (Field Name is A it is primary key) ---------- Field A ========== 1 2 3 4 5 Table B is having data of numeric type ( Field Name is A it is fo
TableA is having a data of numeric type (Field Name is A it is primary key)
----------
Field A
==========
1
2
3
4
5
Table B is having data of numeric type ( Field Name is A it is foreign key)
--------
Field A
========
2
4
现在我使用下面的查询,这是什么
select a.a
from a a
, b b
where a.a <> b.b
选择a.a
从a
,b
a.a.b.b.在哪里
我想显示表A中不等于表B的所有数据。但是上面的查询没有如我所描述的那样工作 在这方面你能帮我吗 问候,
Fawad Munir为了清晰起见,我将大写字母用于表格,小写字母用于字段:
Select A.a
FROM A LEFT OUTER JOIN B ON A.a=B.b
WHERE B.b is null
这将显示A中不在B中的所有记录(我假设这是您想要的)
阅读访问外部连接。在查询设计器中,双击联接并选择类似“表a中的所有记录,仅表b中的匹配记录”的内容。在您的问题中,您说过表b中字段的名称为“a”。鉴于此,我认为您的查询应该是
select a.a
from a, b
where a.a <> b.a
试试看,看它是否符合你的要求
分享和享受。我不知道Access是否会接受这种语法,但在这里我将如何使用SQL Server
select a.a
from TableA a
where a.a NOT IN (
select b.a
from TableB b
)
甚至如上所述:
select a.a
from TableA a
left outer join TableB b on b.a = a.a
where b.a IS NULL
目前还不完全清楚您试图实现什么,但听起来您似乎是在试图解决在表A中查找缺少表B中关联数据的行的常见问题。如果是这种情况,您似乎误解了您尝试的联接的语义。在这种情况下,您有两个问题,因为理解连接操作对于使用关系数据库至关重要 关于第一个问题,请研究如何使用In运算符表示子查询。差不多
... WHERE a NOT IN (SELECT a from b)
关于第二个问题,请尝试不带WHERE限制的查询,并查看返回的内容。一旦您了解联接的作用,您就会明白为什么对其应用WHERE限制无法解决您的问题。如果我理解正确,您希望查看a列中的每一行,其中a列包含的值在b列的任何b值中都找不到。您可以通过多种方式获取此数据 我个人认为,使用NOT IN是最清楚的:
SELECT * FROM tableA WHERE columnA NOT IN
(SELECT columnB FROM tableB WHERE columnB IS NOT NULL)
许多人更喜欢过滤连接:
SELECT tableA.* FROM tableA LEFT OUTER JOIN tableB
ON tableA.columnA = tableB.columnB WHERE tableB.columnB IS NULL
还有一个不存在的变体:
SELECT * FROM tableA WHERE columnA NOT EXISTS
(SELECT * FROM tableB WHERE columnB = tableA.columnA)
“查询没有如我所描述的那样工作”-请准确描述哪些不工作?您所说的“表A中不等于表B的所有数据”是什么意思?对于表A中的每一行,您的查询将匹配表B中列A不同于列B的每一行,这真的是您想要的吗?
SELECT * FROM tableA WHERE columnA NOT EXISTS
(SELECT * FROM tableB WHERE columnB = tableA.columnA)