MYSQL按多个加入子项排序

时间:2016-03-30 21:48:25

标签: mysql sql join sql-order-by children

我似乎无法找到一种方法来对已加入的孩子进行SQL查询排序。

数据库示例:

表:帖子

+------+---------+
| id   | title   |
+------+---------+
| 0    |'title1' |
| 1    |'title2' |
| 2    |'title3' |
+------+---------+

表: post_meta

+------+---------+----------+---------+
| id   | post_id | key      | value   |
+------+---------+----------+---------+
| 0    |0        |'coolness'| 5       |
| 1    |0        |'desc'    |'random' |
| 2    |0        |'author'  |'bill'   |
| 3    |1        |'coolness'| 2       |
| 4    |1        |'desc  '  |'random' |
| 5    |2        |'author'  |'joe'    |
| 6    |2        |'coolness'| 9       |
+------+---------+----------+---------+

我想要一个帖子列表(或者只是帖子ID),这些帖子是由他们的“酷”'元数(asc或desc)。我不知道我是应该从posts表中选择并加入元表,反之亦然。当我加入post_meta表时,我只从其中一个元行获取数据,所以如果我只是通过post_meta.coolness添加一个订单就没有任何反应。

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您只想要id,可以使用post_meta表:

select pm.post_id
from post_meta pm
where pm.key = 'coolness'
order by pm.value + 0;

+ 0是将值(可能是字符串)转换为数字。

如果您需要与帖子相关的其他列,您可以加入posts表。