mysql - 如何为此编写选择查询

标签 mysql sql

我有两张这样的 table

job(id,title,location,...)

job_page(id,id_job,id_page,page_name)

例如,我想编写一个选择查询来填充以下列的表格:

+_______+________+__________+_______+
|Job Id | Titlte | Location | Page  |
+_______+________+__________+_______+
|1      | Hot job| Somewhere| Page1 |
|       |        |          | Page2 |
+_______+________+__________+_______+

如何为此编写选择查询?

我尝试过,但结果并不像我预期的那样:

SELECT jp.page_name,j.* FROM jobs j
LEFT JOIN job_pages jp ON jp.id_job = j.id
GROUP BY j.id;

最佳答案

您需要使用group_concat:

 SELECT j.id, j.title, j.location, group_concat(jp.page_name)
 FROM jobs j LEFT JOIN job_pages jp ON jp.id_job = j.id
 GROUP BY j.id, j.title, j.location;

在 MySQL 中,您可以缩写 GROUP BY:

 SELECT j.id, j.title, j.location, group_concat(jp.page_name)
 FROM jobs j LEFT JOIN job_pages jp ON jp.id_job = j.id
 GROUP BY j.id;

但这确实让像我这样的多数据库用户感到困扰。

关于mysql - 如何为此编写选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7990072/

相关文章:

mysql - Rails 3 作用域与 SQL 返回空白结果

MySQL 错误 (HY000) : Cannot add foreign key constraint

mysql - 如何使用http请求查询字符串属性来过滤where子句

MYSQL使用按日期分组多个字段获取多个字段计数

mysql使用来自另一个表的关系从表中订购数据

sql - 如何使用 postgres 将 json 数据插入到我的表中

php - UPDATE 查询中没有更新一列

mysql - 我怎样才能做相反的键来加入或反转相反的输出

mysql - SQL 查询 : join two tables

sql - 将数据从最大长度为 50 的字符串移动到最大长度为 20 的字符串时,SSIS 截断警告