mysql - 旧版 MYSQL 3.x DB - 查询在不应失败时失败

标签 mysql

我有一个旧版 MySQL 数据库 (3.x),我正在尝试运行一个查询,该查询返回特定列中的所有行,其中返回行的值不应存在于另一列中,来自另一列表

我在这里搜索了所有类似的问题,并通过谷歌搜索了解决方案,但找不到执行此查询失败的原因。

第一个表(表程序)中的列名为“fkfileid”,我要检查的表(表导入)中的列名为“ifkfileid”。我的查询应该返回“programs.fkfileid”中在“imports.ifkfileid”中没有匹配值的所有行。

这是查询:

SELECT fkfileid FROM programs WHERE fkfileid NOT IN (SELECT ifkfileid FROM imports)

我必须使用“NOT IN”而不是“NOT EXISTS”,因为它是旧版 MySQl 数据库。我从数据库得到的错误如下:

“第 1 行 'SELECT ifkfileid FROM imports)' 附近的 SQL 语法有错误”

我的查询与此处类似帖子中显示的几个示例非常相似。我不知道我哪里做错了。

示例:SQL - find records from one table which don't exist in another

此外,我无法使用“JOIN”语句,因为此查询将被添加到一个更复杂的查询中,我不知道如何使其与“JOIN”一起使用。

我无意毫不费力地提出一个愚蠢的问题,但我无法弄清楚这个问题......

感谢您的帮助或见解,

最佳答案

尝试将语句分解为原子部分,并直接针对数据库单独测试它们:

例如确保“SELECT ifkfileid FROM Imports”返回一些数据并且不会导致错误。如果有效,请将整条线路插入并查看结果。通过使用“SELECT fkfileid FROMprograms WHERE fkfileid IN (...)”确保第一部分在语法上正确,并选择一个您知道存在的值。然后使用 NOT IN 等。

很可能存在一个简单的语法错误。我不确定 MySQL 是否对空格敏感,但我见过的所有 NOT IN 查询都有括号反对 IN 指令 - 例如不在(...并且不,不在(...

希望有帮助。

关于mysql - 旧版 MYSQL 3.x DB - 查询在不应失败时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615426/

相关文章:

mysql - MySQL中长度为20的INT和长度为20的BIGINT有什么区别

mysql - 在 mysql 中更改 varchar 的长度有什么影响?

mysql - 获取所有没有关联数据的行

php - Mysql 两个日期的天数和分钟结果差异

php - 怎么发联系方式使用 php 到 sql 数据库

php - 从数据库中选择 MySQL 在输入文本 html 中显示值 从另一个输入文本 html 中按值选择

mysql - 无法在 Linux 上启动 mysqld_safe

基于explain的mysql优化

java - 如何获取 Hibernate 返回的值?

mysql - 将特殊字符转换为度数符号