【发布时间】:2012-12-15 17:01:57
【问题描述】:
我有一个表 A,它有一个“ID”和“消息”,另一个表 B 是有序的。我希望根据表 B 中的排序方式订购表 A。
示例 - 表 A:
ID Message
-------------
1 ABC
2 DEF
3 HIJ
4 KLM
5 NOP
表 B:
ID
---
5
2
4
1
3
预期结果:
ID Message
-------------
5 NOP
2 DEF
4 KLM
1 ABC
3 HIJ
我有以下疑问:
SELECT DISTINCT s.message, s.stream_id
FROM Stream s
ORDER BY ..... ;
我该怎么做? 显然使用 FIND_IN_SET 没有考虑表 B 的顺序
更新
表 B 的排序如下:
SELECT stream_id
FROM SearchCache
GROUP BY stream_id
ORDER BY COUNT(stream_id);
因此,查询应该如下所示:
SELECT DISTINCT s.message, s.stream_id
FROM Stream s
ORDER BY s.stream_id *SOMETHING* (SELECT stream_id
FROM SearchCache
GROUP BY stream_id
ORDER BY COUNT(stream_id)) ASC;
【问题讨论】:
-
Table B是如何排序的?它似乎没有任何特定的顺序,并且您无法按照插入的顺序可靠地检索行... -
从表B中选择时如何指定顺序?如果您没有为表 B 指定 ORDER BY,那么答案是如果不指定 ORDER BY,您将无法可靠地确定行的输出顺序。
-
@Travesty3 伟大的思想都一样,嗯?
-
tableb 上有主键吗?
-
所以
Table B是INSERT INTO SELECT的结果还是只是一个查询?
标签: mysql sql select sql-order-by