从mysql字段获取一行数据

时间:2018-10-29 22:09:28

标签: javascript mysql sql node.js

所以我有一个MySQL数据库,在“主”表上具有以下字段:

Table main: id name age photos
            3  John 22  photo1.jpg
                        photo2.jpg
                        photo3.jpg
                        photo4.png
            72 Diane 31 photo1.jpg
                        photo2.png
            33 Doe   26 photo1.png
                        photo2.png
                        photo3.jpg

这只是说明我真正的问题的一个示例: 我正在用以下代码片段查询该数据库:

 // getJson
 router.get('/getJson', async function(req, res) {
  var objs = [] ;
  res.setHeader('Content-Type', 'text/plain' );

  try {

 var  querySql = 'SELECT id,name,age,photos from main';

  var result = await pool.query( querySql )
  Object.keys(result).forEach(function(key) {
    var row = result[key] ; 
objs.push({"uid":row.id,"prevDesc":row.name,"identifier":row.age,"title":row.photos});}
    });
  res.end( JSON.stringify(objs) );
    } catch(err) {
   console.log(err);
 });

我的问题如下: 使用类似这样的查询查询数据库后,我得到以下结果:

    3 John 22 photo1.jpg
    3 John 22 photo2.jpg
    3 John 22 photo3.jpg
    3 John 22 photo4.png
    72 Diane 31 photo1.jpg
    72 Diane 31 photo2.png
    ...
    ...

以此类推。我的问题是:如何才能从每个行/个人资料中仅获取第一张照片?我的意思是:

     3 John 22 photo1.jpg
     72 Diane 31 photo1.jpg
     33 Doe   26 photo1.png

我想提到我正在使用NodeJS + ExpressJS。 谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用聚合功能获得一张照片:

select id, name, age, min(photo)
from t
group by id, name, age;

没有第一张照片,除非您另有另一列指定顺序。