【问题标题】:Read-only after inner join (MySQL)内部连接后只读(MySQL)
【发布时间】:2015-02-25 11:09:24
【问题描述】:

在 MySQL 工作台 (Mac OS) 中,我想加入两个表,以便更新第二个表。我输入的代码如下

select f.company, f.remarks, c.pic
from feedback f, customers c
where f.col = c.col
order by f.company;

输出是一个只读表,这使我无法根据 f.remarks 列更新表“客户”。

感谢您的意见/建议。谢谢。

【问题讨论】:

  • 显示您尝试的更新。
  • 你想在客户表上更新什么?
  • 由于我使用的是 MySQL 工作台,所以我想先加入表,然后通过双击我要更改的框来更新输出表。谢谢。
  • 这似乎是一个 gui 用户问题。 Mysql 工作台中的行确实变为只读,当有连接时,因为应用程序不知道如何构建查询来更新要更改的字段。您需要通过 id 引用特定的行。
  • 解释“只读”行为的常见问题解答:dev.mysql.com/doc/workbench/en/… - 基本上,您需要在结果中进行 PK。

标签: mysql join mysql-workbench readonly


【解决方案1】:

通过将鼠标悬停在“只读”图标上方,我收到以下消息: “语句必须是从具有主键的单个表中选择的语句,其结果才可编辑”。

根据其他编码员的建议进行了一些研究,以下几点需要注意:

  1. 在 MySQL 工作台中,无法编辑从任何 JOIN 获得的结果,因为它不是来自单个表;
  2. 在从单个表中使用 SELECT 时,必须包含主键才能使结果可编辑。

感谢所有为这个问题做出贡献的人。我很感激。

【讨论】:

    【解决方案2】:

    问题在于,正如您所提到的,SELECT 仅返回“只读”结果集。

    所以基本上你不能使用 MySQL 工作台来更新只读结果集中的字段使用 JOIN 语句时返回的字段

    【讨论】:

    • 我认为他想使用 MySQL Workbench 用户界面单击单元格并对其进行编辑。
    • 是的,我同意,我改写了答案
    • 谢谢。但是假设我使用以下代码: select * from customers;我仍然可以使用工作台编辑表格。
    • 但这不是真的 =) 你可以,如果你从一个表中选择行。
    • 如果 SELECT 不是正确的方法,有人可以建议一个替代解决方案吗?谢谢!
    【解决方案3】:

    据我了解,您想根据查询更新表“客户”。
    也许这篇文章会对你有所帮助:
    update table based on subquery of table

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 2014-03-26
      • 2012-04-24
      • 2017-06-24
      • 2014-01-24
      相关资源
      最近更新 更多