sql - 一个版本的查询中出现 MySQL 错误 1111,另一版本中出现错误 1054

标签 sql mysql mysql-error-1054 mysql-error-1111

我有两个表:

  • 书籍:[isbn、书名、出版商、...]
  • 库存:[isbn、日期、num_changed]

我想退回有库存的书名。我尝试了连接(查询 1)并得到了 1054 错误,然后我用文字值替换了引用,现在得到了 1111 错误。

查询1:

SELECT `books`.`isbn`, `books`.`book_title`, SUM( `inventory`.`numbers_changed` ) AS `num`
FROM `books`
INNER JOIN `inventory` ON `books`.`isbn` = `inventory`.`isbn`
WHERE `books`.`publisher` LIKE '%pint%'
AND `num` > '0'

查询2:

SELECT `books`.`isbn`, `books`.`book_title`, SUM( `inventory`.`numbers_changed` )
FROM `books`
INNER JOIN `inventory` ON `books`.`isbn` = `inventory`.`isbn`
WHERE `books`.`publisher` LIKE '%print%'
AND SUM( `inventory`.`numbers_changed` ) > '0'

正确使用的查询是什么?

编辑
以下是创建表查询:

CREATE TABLE IF NOT EXISTS `books` (
  `isbn` varchar(30) CHARACTER SET ascii NOT NULL,
  `book_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `date_published` varchar(10) CHARACTER SET ascii NOT NULL,
  `author` varchar(40) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `translator` varchar(40) CHARACTER SET utf8 COLLATE utf8_persian_ci DEFAULT NULL,
  `publisher` varchar(50) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `ganre` varchar(50) CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `price` int(7) unsigned NOT NULL,
  `cover_pic` int(1) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`isbn`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `inventory` (
  `isbn` varchar(30) CHARACTER SET ascii NOT NULL,
  `date` varchar(10) CHARACTER SET ascii NOT NULL,
  `numbers_changed` int(5) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

最佳答案

1054 错误与引用不存在的列有关。实际的错误消息将有助于了解导致问题的原因。

1111 错误是因为您尝试在 WHERE 子句中使用聚合函数(在本例中为 SUM):

WHERE ...
  AND SUM( `inventory`.`numbers_changed` ) > '0'  
      ^
      |__ see this?

...在子查询之外。 SQL语句是从下到上检查的,所以我希望删除WHERE子句中的SUM将显示1054错误仍然没有解决。

关于sql - 一个版本的查询中出现 MySQL 错误 1111,另一版本中出现错误 1054,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3756733/

相关文章:

php - 当我搜索数据库而不是获取结果时,出现错误 500

sql - MySQl查询问题

MySQL 错误代码 : 1054 Unknown column 'field' in 'field list'

MySQL触发器更新另一个表

php - 将日期和时间格式转换为字符串

mysql - 用sql获取最后一个数据库条目非常慢

sql - 如何在 PostgreSQL 中找到 IP 对的最高使用率?

python - 如何使用 pyodbc 和 MS-Access 在 Python cursor.execute 中查看真正的 SQL 查询

c# - 尝试查看数据时出现数据库错误

php - mySQL 按评论最多和评论最少的顺序