質問
次のような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 ;
所属していません StackOverflow