Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从sql查询获取所有结果_Mysql_Sql_Python 3.x_Execute - Fatal编程技术网

Mysql 从sql查询获取所有结果

Mysql 从sql查询获取所有结果,mysql,sql,python-3.x,execute,Mysql,Sql,Python 3.x,Execute,我正在向MySQL服务器发送sql查询 if (self.database_connection.is_connected()): cursor = self.database_connection.cursor(prepared=True) sql_query = ''' SELECT e.ad, e.ad2, e.ad3, e.ad4, eve.ad5

我正在向MySQL服务器发送sql查询

if (self.database_connection.is_connected()):
        cursor = self.database_connection.cursor(prepared=True)

        sql_query = '''
                        SELECT
                            e.ad, e.ad2, e.ad3, e.ad4, eve.ad5
                        FROM
                            db.table2 e
                        JOIN
                            db.table eve
                        ON
                            e.ad1=eve.ad4
                        WHERE 
                            e.ad in ('15965', '1444');
                        
                        '''

            cursor.execute(sql_query)
            row = cursor.fetchall()
但它只返回元组中每个元素的第一条记录。 当我在Workbench中查询它时,它会返回所有结果——我的意思是,对于tuple Workbench中的第一个元素,它会返回2条记录,但python只返回第一条记录

工作台结果:

ad     ad2     ad3     ad4         ad5
15965  14      1       2020-04-11  yes
15965  141     NULL    NULL        NULL
1444   41      NULL    NULL        no
Python代码结果:

print(row)
[('15965', '14', '1', '2020-04-11', 'yes'),
 ('1444', '41', NULL, NULL, 'no')]

我尝试使用fetchmany和executemany,但无法理解。

您似乎想要聚合。它看起来像:

SELECT e.ad, MIN(e.ad2), MIN(e.ad3), MIN(e.ad4), MIN(eve.ad5)
FROM db.table2 t2 JOIN
     db.table t 
     ON e.ad1 = eve.ad4
WHERE e.ad in ('15965', '1444')
GROUP BY e.ad;

查询中的列别名不一致。我想你知道如何解决这个问题。

你似乎想要聚合。它看起来像:

SELECT e.ad, MIN(e.ad2), MIN(e.ad3), MIN(e.ad4), MIN(eve.ad5)
FROM db.table2 t2 JOIN
     db.table t 
     ON e.ad1 = eve.ad4
WHERE e.ad in ('15965', '1444')
GROUP BY e.ad;


查询中的列别名不一致。我想你知道如何解决这个问题。

问题是我的愚蠢,我在查询工作台生产表,python在查询开发表…

问题是我的愚蠢,我在查询工作台生产表,python在查询开发表…

请提供示例数据和所需结果。谢谢,我更新了问题。这看起来很可疑:
row=cursor.fetchall()
/
print(row)
。您得到的不是一行,而是几行,因此我希望大致如下:
rows=cursor.fetchall()
/
对于行中的行:…
。这只是变量的名称-与此无关好的,抱歉。你能展示一下这两张表中涉及的行吗?然后,请更正您的查询。它无效,因为表别名t/t2与e/eve不匹配。请提供示例数据和所需结果。谢谢,我更新了问题。这看起来可疑:
row=cursor.fetchall()
/
print(row)
。您得到的不是一行,而是几行,因此我希望大致如下:
rows=cursor.fetchall()
/
对于行中的行:…
。这只是变量的名称-与此无关好的,抱歉。你能展示一下这两张表中涉及的行吗?然后,请更正您的查询。它是无效的,因为表别名t/t2与e/eve不匹配。我不明白为什么要使用MIN()函数?老实说,我和你的问题没有什么不同。我更新了表名。@jan。关键是
groupby
(我刚刚添加的)。是的,我看到在将groupby添加到我的sql查询工作台后,返回的结果与python代码相同……我不明白为什么要使用MIN()函数?老实说,我和你的问题没有什么不同。我更新了表名。@jan。关键是
groupby
(我刚刚添加的)。是的,我看到在将groupby添加到我的sql查询工作台后,显然返回了与python代码相同的结果……哈哈,这就解释了。我很高兴你找到了原因并发布了这个答案。你应该接受它(在这个答案旁边打勾),这样未来的读者会很快明白这一切是怎么回事。@ThorstenKettner我会的,但是:
你可以在两天内接受你自己的答案,这就解释了。我很高兴你找到了原因并发布了这个答案。你应该接受它(在这个答案旁边打勾),这样将来的读者会很快明白这一切是怎么回事。@ThorstenKettner我当然会的,但是:
你可以在两天内接受你自己的答案