【问题标题】:Using SELECT and VALUES together in INSERT statement在 INSERT 语句中同时使用 SELECT 和 VALUES
【发布时间】:2022-01-20 13:41:44
【问题描述】:

我有一个查询作为 python 代码的一部分,其中查询需要使用程序中的变量以及来自另一个数据库的值。我正在使用 mysql-connector-python。

name 的值存在于 python 程序中,我想使用该值和表 metrics 中的值将值插入表 points

这是我迄今为止尝试过的:

class summer:
    def __init__(self, name):
        self.name = name
    def sum_fun(self, name):

        try:
            con = mysql.connector.connect(host='localhost',
            database='databasename', user='root', password='mypasword', charset='utf8')

            if con.is_connected():
                cursor = con.cursor(buffered=True)
                def create_points_table():
                        query=("INSERT INTO points(username, sale,comm,dank) VALUES (%s, (SELECT SUM(regional + intnl) * 150, SUM(commission) * 50, SUM(thank_discount) * 10 FROM Metrics))")
                    cursor.execute(query, (name))
                    con.commit()
                create_points_table();

        except Error as e:
            print(e)
        cursor.close()
        con.close()

查询:

query=("INSERT INTO points(username, sale,comm,dank) 
       VALUES (%s, 
       (SELECT 
          SUM(regional + intnl) * 150, 
          SUM(commission) * 50, 
          SUM(thank_discount) * 10 FROM Metrics))")

查询调用:

cursor.execute(query, (name))

没有任何值被插入到点表中。我在这里做错了什么?

【问题讨论】:

    标签: mysql sql sql-insert mysql-connector-python


    【解决方案1】:

    您不能混合使用 values 和类似的子查询,但您可以查询您打算在 values 子句中拥有的值:

    query=("INSERT INTO points(username, sale,comm,dank) 
           (SELECT 
              %s, -- Here!
              SUM(regional + intnl) * 150, 
              SUM(commission) * 50, 
              SUM(thank_discount) * 10 FROM Metrics))")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2011-08-30
      相关资源
      最近更新 更多