0

私はアンドロイドsqlliteデータベースを持っています。これには、chainid というテキスト列があります。

DISTINCT チェーン ID を持つ行からすべての列を返したい || または、chainid が「none」と等しい場合。

例えば:

| | ID| 名前 | チェーン ID |
| | 1 | ウィジェット名1 | 12345 |
| | 2 | ウィジェット名 2 | 12345 |
| | 3 | ウィジェット名3 | "なし" |
| | 4 | ウィジェット名4 | 49390 |
| | 5 | ウィジェット名5 | 49390 |

上記のテーブルを考えると、クエリで行 2、行 3、および行 5 のすべての列を含む 3 行を返すようにします。-- そのため、chainid の DISTINCT または chainid = "none" で、個別の行として選択された最大 ID を指定します。

1 つのクエリでこれを達成できますか?

すべてを返してから Java で後で処理することもできますが、これは非効率的です。

4

1 に答える 1

0

どうですか

select *
from table where id in
( select max(id)
  from table
  group by chainid
  where chainid != 'none'
  union
  select id
  from table
  where chainid = 'none'
)
于 2013-03-23T11:39:48.053 に答える