标签: sql-order-by

MySQL - 如何按相关顺序排序?INNODB表

我在INNODB表中有大约20,000行称为'cards',所以FULLTEXT不是一个选项.

请考虑此表:

id     |     name     |     description
----------------------------------------------------------
1        John Smith       Just some dude
2        Ted Johnson      Another dude
3        Johnathan Todd   This guy too
4        Susan Smith      Her too
5        Sam John Bond    And him
6        John Smith       Same guy as num 1, another record
7        John Adams       Last guy, promise
Run Code Online (Sandbox Code Playgroud)

因此,假设用户搜索"John",我希望结果集的顺序为:

7        John Adams
6        John Smith
3        Johnathan Todd
5        Sam John Bond
2        Ted Johnson
Run Code Online (Sandbox Code Playgroud)

请注意,我们只拉了一次'John Smith',我们最近参加了他的录取.由于我的数据,所有名字都是针对同一个人,不需要担心两个名叫John Smith的人.想法?如果我能澄清任何事情,请告诉我.

mysql search innodb sql-order-by relevance

34
推荐指数
1
解决办法
2万
查看次数

MySQL中的ORDER BY NULL

什么是ORDER BY NULLMySQL?

它会降低查询速度吗?

mysql sql-order-by

34
推荐指数
3
解决办法
2万
查看次数

处理默认排序顺序的SQL最佳实践

我读过很多SQL代码,似乎开发人员假定默认排序顺序始终存在.例如,在构建HTML选择列表时,他们只会SELECT id, name FROM table发布一个ORDER BY子句.

根据我自己的经验,似乎dbms ORDER BY总是使用FIFO命令数据,如果没有给出子句而没有索引.但是,订单无法保证.但是,如果表没有变化,我从未见过dbms重新排序数据.

如果表没有变化,您是否曾经历过以非确定性顺序选择数据的dbms?

始终放置ORDER BY子句是最佳做法吗?

sql database sql-order-by

33
推荐指数
4
解决办法
3万
查看次数

Hibernate order by nulls last

Hibernate与PostgreSQL DB一起使用,同时按列对desc进行排序会使空值高于非空值.

SQL99标准提供关键字"NULLS LAST"来声明空值应该低于非空值.

使用Hibernate的Criteria API可以实现"NULLS LAST"行为吗?

java null hibernate sql-order-by

33
推荐指数
3
解决办法
3万
查看次数

使用ORDER和LIMIT子句进行极慢的PostgreSQL查询

我有一张桌子,我们称之为"foos",其中有近600万条记录.我正在运行以下查询:

SELECT "foos".*
FROM "foos"
INNER JOIN "bars" ON "foos".bar_id = "bars".id
WHERE (("bars".baz_id = 13266))
ORDER BY "foos"."id" DESC
LIMIT 5 OFFSET 0;
Run Code Online (Sandbox Code Playgroud)

此查询需要很长时间才能运行(Rails在运行时会超时).所有ID都有一个索引.好奇的部分是,如果我删除ORDER BY条款或LIMIT条款,它几乎是瞬间运行.

我假定这两者的存在ORDER BYLIMIT正在做的PostgreSQL查询规划一些错误的选择.任何人都有任何想法如何解决这个问题?

如果它有帮助,这里是EXPLAIN所有3种情况:

//////// Both ORDER and LIMIT
SELECT "foos".*
FROM "foos"
INNER JOIN "bars" ON "foos".bar_id = "bars".id
WHERE (("bars".baz_id = 13266))
ORDER BY "foos"."id" DESC
LIMIT 5 OFFSET 0;
                                                     QUERY PLAN                                                     
--------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..16663.44 rows=5 width=663)
   ->  Nested Loop  (cost=0.00..25355084.05 rows=7608 width=663) …
Run Code Online (Sandbox Code Playgroud)

sql postgresql sql-order-by query-optimization limit

33
推荐指数
2
解决办法
2万
查看次数

使用自己的IComparer <T>和Linq OrderBy

我有一个通用的

List<MyClass>
Run Code Online (Sandbox Code Playgroud)

where MyClass属性InvoiceNumber包含如下值:

200906/1
200906/2
..
200906/10
200906/11
200906/12

我的名单必然是一个

BindingList<T>
Run Code Online (Sandbox Code Playgroud)

支持使用linq进行排序:

protected override void ApplySortCore(
           PropertyDescriptor property, ListSortDirection direction)
{

    _sortProperty = property;
    _sortDirection = direction;

    var items = this.Items;

    switch (direction)
    {
        case ListSortDirection.Ascending:
            items = items.OrderByDescending(x => property.GetValue(x)).ToList();
            break;
        case ListSortDirection.Descending:
            items = items.OrderByDescending(x => property.GetValue(x)).ToList();
            break;
    }

    this.Items = items;

}
Run Code Online (Sandbox Code Playgroud)

但是默认的比较器排序(假设)如下:

200906/1
200906/10
200906/11
200906/12
200906/2

在这种情况下这是令人讨厌的.

现在我想用自己的方式IComparer<T>.它看起来像这样:

public class MyComparer : IComparer<Object>
{

    public int Compare(Object stringA, Object …
Run Code Online (Sandbox Code Playgroud)

c# linq sql-order-by icomparer

32
推荐指数
4
解决办法
7万
查看次数

mysql将varchar字段作为整数

我的表中有一个varchar字段,我想对它进行排序.但我需要将此字段作为整数处理.意思是如果排序为文本,顺序是"19,2,20",但我想得到正确的顺序"2,19,20".

谁能帮我?

mysql sql sql-order-by

32
推荐指数
5
解决办法
4万
查看次数

JPA/hibernate排序集合@OrderBy vs @Sort

我想要一个订购的子对象(这里是cat-kitten示例)的集合.并继续增加新元素的顺序.

@Entity 
public class Cat {
  @OneToMany(mappedBy = "cat", cascade = CascadeType.ALL)
  @OrderBy("name ASC")
  private List<Kitten> kittens;

  public void setKittens(List<Kitten> kittens) { this.kittens = kittens; }
  public List<Kitten> getKittens() { return kittens; } 
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时cat.getKittens.add(newKitten),名称将被打破.

是否有可能让hibernate完成保持集合总是有序的工作?通过使用@Sort hibernate注释?
@Sort的缺点在于它迫使你实现Comparable接口......什么是正确的'纯JPA'方法呢?将所有内容保存到数据库并重新加载?合并@ OrderBy和@Sort是否合理?

到目前为止,更新解决方案是将@OrderBy和@Sort结合起来.@OrderBy导致ORDER BY生成的SQL中的一个子句更好的性能(我假设java在插入到已排序的容器时再次"排序",但是这应该快得多,因为元素已经排序了)@Sort with an an实现的Comparable接口导致始终排序的容器.请注意,我现在使用SortedSet而不是List.这里更新的代码:

@Entity 
public class Cat {
  @OneToMany(mappedBy = "cat", cascade = CascadeType.ALL)
  @OrderBy("name ASC")
  @Sort(type = SortType.NATURAL)
  private SortedSet<Kitten> kittens;

  public void setKittens(SortedSet<Kitten> …
Run Code Online (Sandbox Code Playgroud)

collections hibernate jpa sorted sql-order-by

32
推荐指数
2
解决办法
7万
查看次数

如何在MySQL中按SUM()进行排序?

我有一个表:"ID name c_counts f_counts"

我想订购所有的记录,sum(c_counts+f_counts) 但这不起作用:

SELECT * FROM table ORDER BY sum(c_counts+f_counts) LIMIT 20;

mysql sql sql-order-by

31
推荐指数
3
解决办法
10万
查看次数

Mysql:按顺序排序?

假设我们使用关键字执行搜索:keyword1,keyword2,keyword3

数据库中有"name"列的记录:

1: John Doe
2: Samuel Doe
3: John Smith
4: Anna Smith

现在查询:

SELECT * FROM users WHERE (name LIKE "%John%" OR name LIKE "%Doe%")
Run Code Online (Sandbox Code Playgroud)

它将选择记录:1,2,3(按此顺序),但我想在示例中按关键字排序,keyword1=John, keyword2=Doe 所以它应该按关键字列出:1,3,2(因为我想在之后搜索"Doe"寻找"约翰")

我在考虑SELECT DISTINCT FROM (...... UNION .....) 但是以某种方式以另一种方式订购它会更容易(真正的查询真的很长)

是否有任何技巧来创建这样的订单?

mysql sql sql-order-by sql-like

31
推荐指数
2
解决办法
3万
查看次数