使用MySQL和Python返回基于子查询的元组

使用MySQL和Python返回基于子查询的元组,python,mysql,Python,Mysql,在我放入CONCAT语句之前,这是有效的。我希望在子查询的基础上返回uploads字段的元组 def my_query(): conn = create_connection() cur = conn[0] cur.execute("""SELECT d.id, s.val1, d.val2, s.val3, d.val4, r.val5, r.val6, r.val7,

在我放入CONCAT语句之前,这是有效的。我希望在子查询的基础上返回uploads字段的元组

def my_query():
    conn = create_connection() 
    cur = conn[0]
    cur.execute("""SELECT d.id, s.val1, d.val2, s.val3, d.val4,
                          r.val5, r.val6, r.val7,
                          CONCAT(SELECT u.id, u.file_name, u.file_path FROM related_docs u WHERE u.icd_id = d.id)
                          AS uploads
                   FROM icd_d d, icd_s s, icd_r r
                   WHERE d.id = s.icd_id
                   AND d.id = r.icd_id
                   ORDER BY id ASC
                """)
    data = cur.fetchall()    
    return data
我想你想要这个:

(SELECT CONCAT(u.id, u.file_name, u.file_path) FROM related_docs u WHERE u.icd_id = d.id) AS uploads
但最好在每个值之间添加空格:

(SELECT CONCAT(u.id, ' ', u.file_name, ' ', u.file_path) FROM related_docs u WHERE u.icd_id = d.id) AS uploads
仅当子查询仅返回1行时,此操作才有效。
如果有多行的情况,还可以使用
GROUP\u CONCAT()
获取每行的逗号分隔列表:

(SELECT GROUP_CONCAT(CONCAT(u.id, ' ', u.file_name, ' ', u.file_path)) FROM related_docs u WHERE u.icd_id = d.id) AS uploads
我想你想要这个:

(SELECT CONCAT(u.id, u.file_name, u.file_path) FROM related_docs u WHERE u.icd_id = d.id) AS uploads
但最好在每个值之间添加空格:

(SELECT CONCAT(u.id, ' ', u.file_name, ' ', u.file_path) FROM related_docs u WHERE u.icd_id = d.id) AS uploads
仅当子查询仅返回1行时,此操作才有效。
如果有多行的情况,还可以使用
GROUP\u CONCAT()
获取每行的逗号分隔列表:

(SELECT GROUP_CONCAT(CONCAT(u.id, ' ', u.file_name, ' ', u.file_path)) FROM related_docs u WHERE u.icd_id = d.id) AS uploads

有两条
CONCAT
之后有两条
)是否属于键入错误?我修复了键入错误,但仍然不起作用结构是否保证子查询返回的记录不超过一条?有两条
是否属于键入错误(
CONCAT
之后?我修复了输入错误,但仍然不工作结构是否保证子查询返回不超过一条记录?我确实需要多条记录rows@MikeC.不可能返回“多行”在单个记录的一个字段中。将所有内容连接到一个长字符串中,或者连接而不是相关子查询。@MikeC。请参阅我编辑的答案中的解决方案,以将结果作为逗号分隔的列表。@forpas Perfect。谢谢。我确实需要多个rows@MikeC.不可能返回“多行”在单个记录的一个字段中。将所有内容连接到一个长字符串中,或者连接而不是相关子查询。@MikeC。请参阅我编辑的答案中的解决方案,以将结果作为逗号分隔的列表。@forpas Perfect。谢谢。