【问题标题】:MySQL syntax error when creating a table with data from two other tables使用来自其他两个表的数据创建表时 MySQL 语法错误
【发布时间】:2020-08-20 00:06:01
【问题描述】:

我正在使用另一个表中的数据创建一个新表。我想将 Income_Ledger 表和 Expenditure_Ledger 表中的值与 WHERE 条件组合到一个新表中。

如果只使用其中一个表,我可以成功添加值,但我似乎无法编写 SQL 语法来执行来自两个表的输入。即 AS SELECT、FROM、WHERE 仅使用两个表之一即可。

感谢您的帮助

MySQL(版本 14.14 发行版 5.7.23)

# bank in for below gives strings of: B1 and B2
for bank in Bank_Account_Code:
    with engine.connect() as con:
        con.execute('''
        DROP TABLE IF EXISTS '''+bank+''';''')
        con.execute('''
        CREATE TABLE IF NOT EXISTS '''+bank+'''
        AS SELECT id,Date,CR
        FROM Income_Ledger
        WHERE DR_code="'''+bank+'''"

        AS SELECT id,Date,DR
        FROM Expenditure_Ledger
        WHERE CR_code="'''+bank+'''"

        ORDER BY Date
        ;''')

【问题讨论】:

  • 在大多数情况下,为每个实体创建一个单独的表是一个真正的坏主意。请说明您要解决的问题。
  • 改为创建视图。无需复制数据,将始终保持最新状态。

标签: mysql sql mysql-python


【解决方案1】:

您不能简单地选择两张表并将它们合二为一。 根据您想要组合数据的方式,您可以加入表或使用 UNION。看到两个表中的 CR_code,UNION 是这种情况的最佳选择。

https://www.w3schools.com/sql/sql_union.asp https://www.w3schools.com/sql/sql_join.asp

【讨论】:

  • for bank in Bank_Account_Code: with engine.connect() as con: con.execute(''' DROP TABLE IF EXISTS `'''+bank+'''` ;''') con.execute(''' CREATE TABLE IF NOT EXISTS '''+bank+''' SELECT id, Date, DR_code, DR, CR, CR_code FROM Income_Ledger WHERE DR_code="'''+bank+'''" UNION ALL SELECT id, Date, DR_code, DR, CR, CR_code FROM Expenditure_Ledger WHERE CR_code="'''+bank+'''" ORDER BY DATE ;''')
猜你喜欢
  • 2014-09-22
  • 1970-01-01
  • 2012-08-14
  • 2011-12-14
  • 2020-08-24
  • 2014-04-09
  • 2016-02-07
  • 2014-05-17
  • 1970-01-01
相关资源
最近更新 更多