使用MySQL和Python返回基于子查询的元组
在我放入CONCAT语句之前,这是有效的。我希望在子查询的基础上返回uploads字段的元组使用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,
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。谢谢。