我目前有这个查询设置:
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/