2016-05-08 17 views
1

私はMySql workbench 5.7を使用してこれを実行しています。私は1つの列とのユーザーのリストが欲しいという意味と同じテーブルでMySQLデータベース| count()を照会して、同時に選択します

SELECT Users FROM UserList.custumers; 

、:

SELECT COUNT(Users) FROM UserList.custumers; 

と、このクエリ:私はこのクエリの結果を取得しようとしています

他の列の合計ユーザー数。

私はこのしようとしたとき:

SELECT Users , COUNT(Users) FROM UserList.custumers; 

を私は右の数を持つ単一の行が、私のリスト内の唯一の最初のユーザーを取得します....

答えて

2

あなたがいるので参加クロスを使用しますかカウントのクエリが1つの行になることを知っている...あなたはすべての行で繰り返される値。

SELECt users, userCount 
FROM userlist.custumers 
CROSS JOIN (Select count(*) UserCount from userlist.custumers) 

また、選択でカウントを実行することもできます。カウントは1回だけ行う必要があるため、最初は好きです。

SELECT users, (SELECT count(*) cnt FROM userlist.custumers) as userCount 
FROM userlist.custumers 

またはウィンドウ機能をサポートする環境(ないのmySQL)で、あなたは可能性がcount(*) over (partition by 1) as userCount

使用すると、1つの行を取得している理由は、非から単一の値を選択しますGROUP BYのMySQLの拡張によるものですgroup by句なしで集計を使用すると、集計された列が表示されます。あなたの選択にgroup byを追加すると、すべてのユーザーの数は取得されません。したがって、インライン選択またはクロス結合が必要です。

考えてみましょう: - 私はあなたが

SELECT Users, x.usercount FROM UserList.custumers 
CROSS JOIN (Select count(*) UserCount from userlist.custumers) x 
0
後にしていると考えているものを - --allユーザーが間違った数

SELECT Users , COUNT(Users) FROM UserList.custumers group by users; 

対対1のレコードではないすべてのユーザー

SELECT Users , COUNT(Users) FROM UserList.custumers; 

SELECTにサブクエリを使用します。

Select Users, 
     (SELECT COUNT(Users) FROM UserList.custumers) as total 
FROM UserList.custumers; 
関連する問題