mysql - 如何在 sql 中使用 join 以获得所需的结果

标签 mysql sql node.js

我有 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';

我得到了这个结果:- enter image description here

但我想要这样的记录:-

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/

相关文章:

mysql - 如何将同一个表中的两列连接成单列

php - 如何选择一列中的最大值,然后选择另一列中的最大值?

sql - 如果旧的不可用,则从当月获取行

sql - 获取SQL中单词的几个字母

node.js - 使用搜索对象的 "internal relation"查询 where

javascript - 使用RSA公钥加密字符串

PHP、MySQL 和关联数组问题...?

mysql - 如何在不丢失数据的情况下自动递增此表?

node.js - Windows 服务器上的 Node-cron

php - 来自 MySQL 查询的意外数组值