[解決済み] Postgresの場合。1つのカラムだけ区別される
質問
pgsqlで100万行以上の名前を持つテーブルを持っていますが、重複しているものも多くあります。私は3つのフィールドを選択します。
id
,
name
,
metadata
.
でランダムに選択したい。
ORDER BY RANDOM()
と
LIMIT 1000
というわけで、PHPスクリプトのメモリを節約するために、何段階にも分けてやっています。
しかし、どうすれば名前の重複がないリストだけを表示させることができるのでしょうか?
例えば
[1,"Michael Fox","2003-03-03,34,M,4545"]
は返されますが
[2,"Michael Fox","1989-02-23,M,5633"]
. 名前フィールドは最も重要で、selectを実行するたびにリスト内でユニークでなければならず、ランダムでなければなりません。
で試してみました。
GROUP BY name
に id とメタデータがあることを期待されます。
GROUP BY
として、またはaggragate関数で、しかし、私はそれらを何らかの形でフィルタリングされたくありません。
多くのカラムを取得し、1つのカラムだけを区別する方法を知っている人はいますか?
どのように解決するのですか?
1列(またはn列)のみで区別する場合。
select distinct on (name)
name, col1, col2
from names
これは、その名前を含む行のいずれかを返します。どの行が返されるかを制御したい場合は、順序を指定する必要があります。
select distinct on (name)
name, col1, col2
from names
order by name, col1
col1 で並べたとき、最初の行を返します。
SELECT DISTINCT ON ( expression [, ...] ) は、与えられた式が等しいと評価される各行集合の最初の行だけを保持します。DISTINCT ON式は、ORDER BYと同じ規則で解釈されます(上記参照)。ORDER BYを使用して目的の行が最初に表示されるようにしない限り、各セットの「最初の行」は予測不可能であることに注意してください。
DISTINCT ON 式は、一番左の ORDER BY 式と一致しなければなりません。ORDER BY句は通常、各DISTINCT ONグループ内の行の優先順位を決定する追加の式を含んでいます。
関連
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] 'ユーザー "postgres" のパスワード認証に失敗しました'
-
[解決済み] PostgresでInsert文のUUIDを生成する?
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?
-
[解決済み] ある列に含まれる明確な値の数を求めるSQL
-
[解決済み】psql: FATAL: ユーザー "postgres" の Ident 認証に失敗しました。
-
[解決済み】1つの列のSELECT DISTINCT
-
[解決済み] PostgreSQLの特定のスキーマのデータベースに格納されているすべての関数のリストを取得するにはどうすればよいですか?
-
[解決済み] リストからランダムに50項目を選んでファイルに書き込む
-
[解決済み] PostgreSQLでタイムスタンプの差を秒単位で求める
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Centos環境でのPostgresqlのインストールと設定、環境変数の設定Tips
-
どのように定期的にLinux上でpostgresqlのデータベースをバックアップする
-
Postgresqlの操作でSQL文の実行効率を表示する
-
PostgreSQLがバキュームテーブルの情報を収集する必要があることを発見する方法
-
Postgresqlのデータは、2つのフィールドを追加し、一意の操作を統合する
-
[解決済み] 未知語からテキストへの変換関数の検索に失敗しました。
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] psqlでデータベースを切り替えるには?
-
[解決済み】PostgreSQLのDISTINCT ONで異なるORDER BYを指定した場合
-
[解決済み】PSQLコマンドを使用してホスト名とポートを検索する