Mysql - 如何在左连接中为整个 table 数据添加别名

Mysql - How to alias a whole table data in a left join

假设我有两个 table,
users(id, name, gender)
posts(id, user_id(foreign_key from users), body, date)

我需要查询一个 post,结果应该如下所示

[
  "id": 1,
  "body": "Some post body",
  "date": "24-10-2015"
  "user": [
   "id": 23,
   "name": "FirstName LastName",
   "gender": "male"
  ]
 ]

我试过了,它给出了 table 的所有属性。但是我需要 users table 中的属性作为数组。我该怎么做?

SELECT * 
  FROM  `posts` 
  LEFT 
  JOIN  `users` 
  ON  `posts`.`user_id` =  `users`.`id` 

您可以使用group_concat功能。此函数以逗号分隔的形式生成用户数据。我不太了解你的数据库表,但我尝试设置一个 ex-

SELECT post.Id, group_concat(users.id) as user_id, group_concat(users.name) as user_name, group_concat(users.gender) as user_genders
FROM  `posts` 
LEFT  JOIN  `users` 
ON  `posts`.`user_id` =  `users`.`id` 
GROUP BY posts.id

试过了。 http://sqlfiddle.com/#!9/a907b/21

您可以进一步格式化。

SELECT CONCAT('[\n "id": ',POSTS.ID,', \n "body": "'
  ,BODY,'",\n  "date": "' ,DATE,'"\n  "user": [\n   "id": '
  ,USERS.ID,',\n   "name": "', NAME,'",\n   "gender": "'
  ,gender,'"\n  ]\n ]')
FROM USERS
LEFT JOIN POSTS ON users.id=posts.user_id

要在 sqlfiddle 中查看,请使用 Run SQL 按钮上的下拉菜单并选择 plaintext output