mysql - 连接同一张表中的两行

标签 mysql sql join

我目前有这个查询设置:

SELECT 
  topic.content_id, 
  topic.title, 
  image.location 
FROM 
  mps_contents AS topic 
  INNER JOIN mps_contents as image 
    ON topic.content_id = image.page_id 
WHERE 
  topic.page_id = (SELECT page_id FROM mps_pages WHERE page_short_name = 'foo' ) 
  AND image.display_order = '1'

这是因为我想将同一表中的两行合并为一行。这是表格的简化设置

-----------------------------------------------------------
| page_id | content_id | title | location | display_order |
-----------------------------------------------------------
|    1    |     200    |  Foo  |   NULL   |     200       |
|   200   |     201    |  Bar  | jpg.jpg  |      1        |
-----------------------------------------------------------

基本上我想要这个结果

---------------------------------
| content_id | title | location |
---------------------------------
|     200    |  Foo  | jpg.jpg  |
---------------------------------

因此 Foo 是第 1 页的第 200 个主题(Foo 被视为子页面,其所有内容都存储在同一个表中)和 Bar 是它的特色图片(特色只是因为它是第一张图片)

上面的查询有效地连接了两行(它返回了我想要的结果),但它也返回了一个额外的行,对应于 Foo 的原始行,即位置为 NULL。

我希望有人能帮助我防止查询返回该额外行。

最佳答案

WHERE ... AND location 不为空

关于mysql - 连接同一张表中的两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6841209/

相关文章:

MySQL用正则表达式替换字符串

mysql - SQL 仅选择列上具有最大值的行

python - 使用完全外连接连接 pandas 中的两个数据帧

r - 如何使用 dplyr 仅连接某些行?

php - 使用 PHP 从 MySql 数据库中选择两个日期之间的记录

mysql - 使用 PDI 保存更改历史记录

mysql - 您能给我一些关于数据库表结构的建议吗?

基于字段提取值的MYSQL JOIN表

sql - SSIS 包不想获取临时表的元数据

sql - Entity Framework 和 LINQ 一起批量更新