鍍金池/ 問答/數(shù)據(jù)庫(kù)  HTML/ node mysql連接查詢結(jié)果只有一個(gè)?

node mysql連接查詢結(jié)果只有一個(gè)?

現(xiàn)在有posts和tags兩個(gè)表

posts中一個(gè)post可以有多個(gè)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查詢后,結(jié)果都是只有一個(gè)tag,而不是多個(gè)tag?為什么?

結(jié)果

圖片描述

回答
編輯回答
焚音

好吧,最后在node mysql官方的issues中找了很多例子,結(jié)果發(fā)現(xiàn)如果直接用一條語(yǔ)句的話,很多查詢結(jié)果都是返回一個(gè)json或object而不是一個(gè)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)
}

返回的結(jié)果

得到了全部tag并轉(zhuǎn)成了字符串類型
圖片描述

2017年3月25日 13:36