2

選択クエリで重複行が選択されないようにするにはどうすればよいですか?

次のフィールドを持つテーブルがあります。

  • 名前
  • タイプ
  • user1
  • user2
  • user3
  • 日にち

私のクエリでは、フロントエンドでユーザーが入力したときにのみ特定のユーザーのデータを選択する必要があります。ユーザーが1と入力すると、選択クエリはuser1のデータのみを取得する必要があります。

私は現在このようにやっています:

select name,type,date from table1 order by user1;

しかし、結果に冗長な行が表示されますか?

私が間違っていることは何ですか?これらの重複行を回避するにはどうすればよいですか?

助けてください...

4

3 に答える 3

6

あなたの質問を完全に理解しているかどうかわかりません。しかし、とにかく試してみます:

  1. ユーザー入力に基づいて特定のユーザーをフィルタリングする場合は、次を試してください。

    name、type、「date」を table1 から選択します。ここで、user = [WHATEVER YOUR USER INPUTS] 名前順

  2. ユーザー入力に応じて別の列 (user1、user2、user3) を選択する場合は、次を試してください。

    name、type、"date"、decode(YOUR_USER_INPUT, 1, user1, 2, user2, 3, user3) を table1 から名前順に選択

  3. 異なる結果が必要な場合は、個別の選択を試してください

    table1 から個別の名前、タイプ、「日付」、user1、user2、user3 を選択

それに応じて支援できるように、例を提供してください。がんばれ、グドラック

于 2009-05-03T11:58:24.347 に答える
4

SELECT DISTINCT を使用するか、GROUP BY 句を使用するかの 2 つのオプションがあります。日付列もあり、Oracleでは時間があることも意味するので、安全のために日付列を切り捨てる必要があります。時間が挿入の一部ではないことを知っていても、とにかく切り捨てます。日付が表示されたら、時間があると見なすことをお勧めします。

次に発生する問題は、SELECT の一部ではない列に ORDER BY を使用できないことです。

私のお勧めは GROUP BY です。


SELECT user1, name, type, TRUNC(date) date
FROM Table1
GROUP BY user1, name, type, TRUNC(date)
ORDER BY user1
于 2009-05-03T16:51:45.763 に答える
1

SELECTDISTINCTを試してください

于 2009-05-03T11:49:43.883 に答える