Mysqlテーブルにはinfo
があります:
Id、Name、City、date、status
「info」からすべての名前を選択したい
$query = mysql_query("SELECT name FROM info WHERE status = 1 ORDER BY id")
or die(mysql_error());
while ($raw = mysql_fetch_array($query))
{
$name = $raw["name"];
echo ''.$name.'<br>';
}
その結果、すべてのエントリが返されます。すべてのエントリを重複せずにエコーしたい。
言う:生の「名前」の下に、「ジョン」という名前を10回挿入しました。
一度だけエコーしたい。これは可能ですか?
とても簡単です。
SELECT DISTINCT name FROM info WHERE status = 1 ORDER BY id
SQLキーワードDISTINCT
がトリックを行います。
これをクエリとして使用してみてください。
SELECT DISTINCT name FROM info WHERE status = 1 ORDER BY id
異なる名前を取得する
または他の推奨される使用法としてGROUP BY
SELECT name FROM info WHERE status = 1 GROUP BY name ORDER BY id
最初のものはより直感的であり、2つの間に大きなパフォーマンスの違いはないと思います
[〜#〜] edit [〜#〜]
oPはここに名前の数も必要としているので、
SELECT name,COUNT(id) AS n_names
FROM info WHERE status = 1
GROUP BY name
ORDER BY name
あなたはできる ORDER BY
name
またはn_names
必要なものに応じて
変化する
SELECT name FROM info WHERE status = 1 ORDER BY id
に
SELECT name FROM info WHERE status = 1 GROUP BY name ORDER BY id
GROUP BY
が追加されました。グループごとの詳細 http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html
編集:
出現回数のある名前の場合
SELECT name、count(name)FROM info WHERE status = 1 GROUP BY name ORDER BY id
sQLステートメントにGROUP BY name
を追加します-これにより、名前列から各エントリが1つだけ返されます。
バルクSMSを送信していて、同じメッセージを同じ男Johnに2回送信したくないとしましょう。私が発見したのは、GROUP BYとORDER BYのトリックを同時に使用すると完璧に機能するということです。しかし、私はそれが最良の方法だとは言いません。ここにあなたがそれを使用する方法があります
SELECT name FROM info WHERE status = 1 GROUP BY name ORDER BY name
編集:これは重要です。1列以上必要であり、行ごとに値が一意である場合、DISTINCTは役に立ちませんでした。
$ sql = "SELECT DISTINCT name FROM status = 1 GROUP BY name ORDER BY name";
$query = mysqli_query($conn,$sql);
<?php while ( $fire=mysqli_fetch_array($query)) { ?>
<h4><?php echo $query['name']; ?><br></h4>
<?php } ?>
gROUP BY名前ステートメントを使用
$query = mysql_query("SELECT name FROM info WHERE status = 1 GROUP BY name ORDER BY id") or die(mysql_error());
while ($raw = mysql_fetch_array($query)) {
$name = $raw["name"];
echo ''.$name.'<br>';
}
これは私のために機能し、特定のデータベースのテーブル名を返します。
my $sql="select distinct table_name from COLUMNS where table_schema='$database'"
my $sth = $dbht->prepare( $sql )
or die "Cannot prepare SQL statement: $DBI::errstr\n";
$sth->execute
or die "Cannot execute SQL statement: $DBI::errstr\n";
if ($DBI::err){
$msg= "Data fetching terminated early by error: $DBI::errstr";
}
while (@col=$sth->fetchrow_array()){
$table[$i]=$col[0];
$i++;
}