我有 2 个表 orc_users 和 orc_files。 现在我想从 orc_files 表中获取相关用户的文件 我试过这个查询:-
use orc
select *
from orc_users as T1
INNER JOIN orc_files AS t2 on T1.id = t2.userid
where T1.email='sdfsdf';
我得到了这个结果:-
但我想要这样的记录:-
user={name:"sad",
phone:"asdasda",
files:[{filename:"dfsdfs",size:12,fileid:"sdfs"},
{filename:"dfsdfs",size:12,fileid:"sdfs"}]}
我将 node.js 与 MySQL 一起使用,所以它会以数组形式给出结果。
请帮帮我。 提前致谢。
最佳答案
所有未经测试的: 在查询中使用 group_concat() 作为逗号分隔字符串和分组依据,如下所示:
select
t1.id
/* specify the fields here */
, GROUP_CONCAT(T2.Filename
ORDER BY T2.Filename ASC SEPARATOR ', ') as filenames
from orc_users as T1
INNER JOIN orc_files AS t2 on T1.id = t2.userid
where T1.email='sdfsdf'
group by
t1.id
/* specify the fields here too */
;
也尝试使用 CONCAT() 来获取文件名和大小,例如
, GROUP_CONCAT( CONCAT(T2.Filename,' size:',T2.size)
ORDER BY T2.Filename ASC SEPARATOR ', ') as filenames
如果 group_concat() 中的 concat() 有效 [我认为它会] 继续添加项目,直到您获得所需的所有详细信息。
性能警告:不知道这会有多好,可能不会很好。
关于mysql - 如何在 sql 中使用 join 以获得所需的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24817783/