使用查询检查记录

Posted

技术标签:

【中文标题】使用查询检查记录【英文标题】:Checking records with query 【发布时间】:2016-12-06 14:15:50 【问题描述】:

我在一所学校做 IT。我们使用基于 Access 中的数据库的程序。父母填写姓名、儿子或女儿的姓名和班级 然后为我们提供有关他们孩子的额外信息。这一定是正确的,尤其是类。

这就是我放置控件(查询检查类)的原因。我有 1 个表格,我可以在其中找到孩子的所有信息(表格“学生”) 另一个表('信息')是父母填写的内容。现在我想查看所有父母犯了错误的学生:

这是我的查询,它不起作用:

In (SELECT [class] FROM [information] WHERE (([information].[frontname] = [student].[frontname]) AND ([information].[class] <> [student].[class])))

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

由于某些原因,您的 SQL 无效。

    IN() 应该被取出。它是用于比较的表达式,位置不正确,不会更改结果数据集。 您没有调用表 Information 和表 Student,但您在 WHERE 语句中比较两者。 SELECT [class] 不明确。 [class] 存在于两个表中,因此您需要选择要查看哪个表的值。如果是学生表,那么应该是SELECT [student].[class] 或许您想查看这两个值,以便了解它们的不同之处。 使用连接,它们更易于阅读和理解

因此,由于我不完全理解您的问题,因此可能无法为您提供所需内容的编辑如下:

SELECT [student].[class], [information].[class]
FROM [Information]
INNER JOIN [Student]
ON [information].[frontname] = [student].[frontname]
WHERE [information].[class] <> [student].[class];

但是,您会得到奇怪的数据,因为您只是在比较前名,所以如果这所学校有两个 De Vlieger,则查询不会知道要返回哪一个。

因此进一步编辑,假设两个表中都存在“backname”或“lastname”或“surname”字段:

SELECT [student].[class], [information].[class]
FROM [Information]
INNER JOIN [Student]
ON [information].[frontname] = [student].[frontname]
AND [Information].[surname] = [student].[surname]
WHERE [information].[class] <> [student].[class];

【讨论】:

您在复制和粘贴方面犯了一个错误,没有第二个ON 加入。 :)

以上是关于使用查询检查记录的主要内容,如果未能解决你的问题,请参考以下文章

您如何检查子查询记录是不是在范围外部字段中?

插入查询检查记录是不是存在 - 如果不存在,插入它[重复]

如何在jooq查询的左连接中检查记录是不是完​​全为空

在使用php插入sql之前检查记录

mysql只能取出一条记录为啥不显示

比使用 LINQ 更快地查询数据库的每条记录