node mysql连接查询结果只有一个?

现在有posts和tags两个表

posts中一个post可以有多个tag

tags表

图片描述

视图为

图片描述

sql:

SELECT posts.*, tags.tag_name
FROM posts
INNER JOIN tags ON posts.post_id = tags.post_id
WHERE posts.post_status = 'publish'
ORDER BY posts.post_date DESC
LIMIT 0,2

node _sql

const getLists = async (page) => {
  let _sql = `SELECT posts.*, tags.tag_name
              FROM posts
              INNER JOIN tags ON posts.post_id = tags.post_id
              WHERE posts.post_status = 'publish'
              ORDER BY posts.post_date DESC
              LIMIT ${(page - 1) * 2},2;`
  return dbquery(_sql)
}

但是在node mysql查询后,结果都是只有一个tag,而不是多个tag?为什么?

结果

图片描述

阅读 2.4k
1 个回答

好吧,最后在node mysql官方的issues中找了很多例子,结果发现如果直接用一条语句的话,很多查询结果都是返回一个json或object而不是一个array,所以我最后的做法是这样

SELECT
posts.post_id,
posts.post_title,
GROUP_CONCAT(tags.tag_name) as tags
FROM posts
LEFT JOIN tags ON posts.post_id = tags.post_id
GROUP BY posts.post_id
LIMIT 0,10

node _sql

const getLists = async (page) => {
  let _sql = `SELECT
              posts.*,
              GROUP_CONCAT(tags.tag_name) as tags
              FROM posts
              LEFT JOIN tags ON posts.post_id = tags.post_id
              GROUP BY posts.post_id
              LIMIT ${(page - 1) * 10},10`
  return dbquery(_sql)
}

返回的结果

得到了全部tag并转成了字符串类型
图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题