所以我有一个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。 谢谢您的帮助!
答案 0 :(得分:2)
您可以使用聚合功能获得一张照片:
select id, name, age, min(photo)
from t
group by id, name, age;
没有第一张照片,除非您另有另一列指定顺序。