按两个字段选择和排序

时间:2012-01-15 17:45:43

标签: mysql

我有这个问题:

"SELECT * FROM bookmarks WHERE id=? ORDER BY title ASC",

效果很好。但是我添加了另一个字段tag我现在需要按标记和标题排序。

应用程序方面,这就像将所有书签分组到标签(按字母顺序排列),最后在每个标签中单独按字母顺序排列。

我正在编写代码来执行此操作我只需要sql按顺序提供数据。

如果我不得不猜测:

"SELECT * FROM bookmarks WHERE id=? ORDER BY title ASC AND ORDER BY tag ASC",

由于

3 个答案:

答案 0 :(得分:3)

由于您想要分组到标签,然后按标题排序,您必须相应地订购:

SELECT * FROM bookmarks WHERE id=? ORDER BY tag ASC, title ASC

答案 1 :(得分:3)

您使用逗号分隔排序列(请检查select clause documentation):

SELECT * FROM bookmarks WHERE id=? ORDER BY tag, title;

ASC不需要 - 这是默认的排序顺序。

答案 2 :(得分:1)

SELECT * FROM bookmarks WHERE id=? ORDER BY tag ASC, title ASC;

参考 ORDER BY Optimization

语法:

SELECT * FROM t1
  ORDER BY key_part1,key_part2,... ;

SELECT * FROM t1
  WHERE key_part1=constant
  ORDER BY key_part2;

SELECT * FROM t1
  ORDER BY key_part1 DESC, key_part2 DESC;

SELECT * FROM t1
  WHERE key_part1=1
  ORDER BY key_part1 DESC, key_part2 DESC;