2

たとえば、次の 3 つのフィールドを持つテーブルがあります。

  1. id (整数)
  2. 名前 (varchar)
  3. 会社 (int)

次のデータがあるとしましょう(例のみ)

id ---    name          ---    company
---------------------------------------
1 ---    John Baker     ---      1
2 ---    Ann Johnson    ---      1
3 ---    John Wu        ---      1
4 ---    Mike Johns     ---      2
5 ---    John John      ---      2
6 ---    Johnny Boy     ---      2

名前で検索を実行し、会社ごとにずらしたデータを返したいと思います。したがって、 で検索を実行する場合、LIKE '%John%'1、2、1、2、1、2 のように会社別に並べ替えられた方法でデータを返したいと考えています。可能。

このずらした方法でデータを返す方法がわかりません。何時間も考えました。誰かが私を助けてくれるなら、彼らのアイデアを聞きたいです!

4

3 に答える 3

0

考えられる解決策の 1 つ:

select *
from yourTable
where ...
order by ((company*1000) + id);

必要なだけゼロを追加します。少なくとも、この数と同じ数のゼロが必要になります。

select pow(10,length(max(company))) from yourTable;

このクエリで多くのレコードを取得すると、順序付けが非常に遅くなる可能性があるため、最適なwhere条件を使用することをお勧めします。

最もエレガントなソリューションではありませんが、うまくいくかもしれません。

于 2013-04-16T16:43:52.940 に答える