SQL ERROR 1054(42S22):未知列...为何未知?

时间:2016-04-09 09:49:07

标签: mysql sql

enter image description here

我想知道在高光部分我做错了什么? 非常感谢你!

2 个答案:

答案 0 :(得分:1)

首先:您不应链接图像,而是在请求中将SQL和结果显示为文本。由于浏览器的限制,有些人无法打开链接。此外,无法搜索图像内容。如果我们想尝试您的查询,我们必须编写它而不是能够复制和粘贴。最后,图片链接有一天可能无效。请编辑您的请求并将SQL和结果显示为文本。

无论如何,至于原始错误:错误消息告诉你哪个字段是未知的。因此,只需查看表及其列名,即可检查拼写错误。

关于更新查询:AND优先于OR。所以:

update comp575_books, comp575_authors 
set comp575_books.publisher_id=1 
where comp575_books.author_id = comp575_authors.author_id 
  and comp575_authors.first_name = 'Markus' or comp575_authors.first_name = 'Robert';

表示

where (comp575_books.author_id = comp575_authors.author_id 
  and comp575_authors.first_name = 'Markus') or comp575_authors.first_name = 'Robert';

使用括号更正此问题。或者使用简单的更新语句,而不是更新视图。无论如何,这更具可读性。

update comp575_books
set publisher_id = 1 
where author_id in
(
  select author_id
  from comp575_authors
  where first_name in ('Markus', 'Robert')
);

答案 1 :(得分:0)

当您尝试将comp575_book.author_id与comp575_author.author_id进行比较时,可能是错误。如您所见,comp575_author不是数据库中的有效表。