mysql - MySQL - 为什么我的查询只返回一行而不是三行?
问题描述
我在messages
MySQL 数据库的表中有 3 个条目,其中接收者的 id 是整数 291。我的查询应该选择这三个条目,然后从帐户表中加入接收者的名称和头像;
SELECT
m.audiourl,
m.receiver,
m.audioid,
m.sender,
ac.gavatar,
ac.name
FROM messages m
LEFT JOIN accounts ac ON ac.id = m.sender
WHERE m.receiver = 291
这是消息表;
但不是返回三行 JSON 数据,而是仅返回第一行。IE;
{"audiourl":"87-message-291-4.m4a","receiver":291,"audioid":4,"sender":87,"gavatar":"87-user.jpg","name":"GroovyGrrl"}
它应该是这样的;
[{
"audiourl":"87-message-291-4.m4a","receiver":291,"audioid":4,"sender":87,"gavatar":"87-user.jpg","name":"GroovyGrrl",
"audiourl":"87-message-291-5.m4a","receiver":291,"audioid":4,"sender":87,"gavatar":"87-user.jpg","name":"GroovyGrrl",
"audiourl":"87-message-291-6.m4a","receiver":291,"audioid":4,"sender":87,"gavatar":"87-user.jpg","name":"GroovyGrrl"
}]
我的查询有什么问题?
解决方案
感谢我在评论中收到的故障排除建议,我了解到问题出在 NodeJS 而不是 MySQL 查询上。
我用它来收集查询结果;
const audiourl = row_a[0].audiourl;
const receiver = row_a[0].receiver;
const audioid = row_a[0].audioid;
const sender = row_a[0].sender;
const gavatar = row_a[0].gavatar;
const name = row_a[0].name;
const timestamp = row_a[0].timestamp;
用这个返回JSON;
res.json({
"audiourl": audiourl,
"receiver": receiver,
"audioid": audioid,
"sender": sender,
"gavatar": gavatar,
"name": name,
"timestamp": timestamp
});
但相反,我应该跳过所有变量并简单地这样做;
res.json(row_a)
中的“0”row_a[0]
仅返回第一行。
推荐阅读
- php - Symfony 5 如何为 argon2 存储盐?
- sql - SQL Server内部连接查询从多对多关系表
- jq - 使用 |= update-assignment 时 jq 管道中间需要身份运算符
- django - 有比这个更短/更简单的查询吗?
- tcp - TCP 上的类 GATT 协议
- javascript - 如何显示列表
使用 v-for 方法? - html - 通过引导程序获取中间的卡盒
- c++ - 通过更改模板之一将其更改为 muliset 后,我可以在 PBDS 有序集上使用计数功能吗
小于等于 - python - django StreamingHttpResponse picamera 运行但不渲染流,请指教
- r - 关于 R 包发布和代码可见性的问题