如何选择所有记录,但按相关表的列排序?

时间:2013-09-19 15:07:40

标签: sql postgresql select join

我有以下表格:

  1. 关键字,
  2. keywords_clients,
  3. keywords_groups,
  4. 客户端,
  5. 表2和表3列出了关键字和组以及关键字和客户端之间的多对多关系。

    我想从关键字表中检索所有记录。但是,我想以这样的方式对关键字进行排序,即首先出现属于特定组的关键字。我如何实现这一目标?

    我希望这是有道理的,真诚地感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要加入要使用的所有表格,但是您应该将选择列表限制为仅对您来说很重要的列。选择所有表中的所有列并不是必须的,尽管这是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子句。