質問

次のようなSQL結果から(PHPで)配列を作成したいと思います。 sql-table" Posts"があります。 名前メッセージを保存します。例:

  

名前|メッセージ

     

ジョン|こんにちは

     

ニック|良い一日

     

ジョージ|さようなら

     

ジョン|どこ

私が欲しいのは、メッセージを投稿したが同じ名前を複数回表示していない人の名前を出力することです。 したがって、出力はJohn、Nick、Georgeになります。 (これらのレコードから、Johnが2つのメッセージを投稿したことがわかりますが、最終出力では、彼の名前が1回だけ表示されます。)

これはどういうわけか可能ですか? 事前に感謝します。

役に立ちましたか?

解決

試してください:

$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
  $names[] = $row[0];
}
print_r($names);

他のヒント

SELECT DISTINCT

SQLクエリを実行して、異なる名前を選択するだけで、それ以外は何もできませんでした:

SELECT DISTINCT Name FROM Posts;

これにより、異なるNames値で構成される結果セットが得られ、各一意の値はセットで1回だけ返されます。

group byを使用して集計する必要があるカウントを取得するには:

選択         名     、投稿としてCOUNT(*) から         投稿 GROUP BY         NAME

グループBYを嫌がらない場合のSQLは次のとおりです

select count(name) as N, name from posts group by name ;

複数の投稿を持っている人

select count(name) as N, name from posts group by name having N > 1 ;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top