从同一个表中加入两行

时间:2011-07-27 08:04:55

标签: 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。

我希望有人可以帮我阻止查询返回那个额外的行。

1 个答案:

答案 0 :(得分:1)

WHERE ... AND location IS NOT NULL