【发布时间】:2013-09-19 15:07:39
【问题描述】:
我有以下表格:
- 关键字,
- keywords_clients,
- keywords_groups,
- 客户,
- 群组
表 2 和表 3 用于关键字和组以及关键字和客户之间的多对多关系。
我想从关键字表中检索所有记录。但是,我想以这样一种方式对关键字进行排序,即属于特定组的关键字首先出现。我如何做到这一点?
我希望这是有道理的,并真诚地感谢任何帮助。
【问题讨论】:
标签: sql postgresql select join
我有以下表格:
表 2 和表 3 用于关键字和组以及关键字和客户之间的多对多关系。
我想从关键字表中检索所有记录。但是,我想以这样一种方式对关键字进行排序,即属于特定组的关键字首先出现。我如何做到这一点?
我希望这是有道理的,并真诚地感谢任何帮助。
【问题讨论】:
标签: sql postgresql select join
您需要连接所有要使用的表,但您应该将选择列表限制为仅对您很重要的那些列。尽管SELECT * 提供给您,但不必从所有表中选择所有列。
类似这样的:
SELECT k.*
FROM keywords k
JOIN keyword_groups kg ON k.k_id=kg.k_id
JOIN groups g ON kg.g_id=g.g_id
ORDER BY CASE WHEN g.class='Top' THEN 0 ELSE 1 END, g.name, k.name;
如果您只需要查看特定组,只需为其添加 WHERE 子句即可。
【讨论】: