【问题标题】:Get one single row of data from a mysql field [duplicate]从mysql字段中获取一行数据[重复]
【发布时间】:2018-10-29 22:09:27
【问题描述】:

所以我有一个 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

这只是说明我真正问题的一个例子: 我正在使用以下代码 sn-p 查询这个数据库:

 // 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。 谢谢你的帮助!

【问题讨论】:

  • 你如何定义第一张照片? SQL 表代表 无序 集。除非列定义了第一个,否则没有“第一个”。
  • 那么……这个问题没有解决办法吗?
  • 。 .如果这些是唯一的列,则您的问题在此表上无法解决。这就像询问图像中的像素数或人的母语一样。信息不在表中。
  • 好的开始是使用带有主键和 auto_increment 选项的 id 列或带有 on update current_timestamp 选项的 datetime 列。然后你应该能够识别组中的第一张照片..跨度>

标签: javascript mysql sql node.js


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2014-07-18
    • 1970-01-01
    • 2013-11-04
    相关资源
    最近更新 更多