Saya memiliki tabel MySQL yang berisi jenis informasi berikut:
Date product
2011-12-12 azd
2011-12-12 yxm
2011-12-10 sdx
2011-12-10 ssdd
Berikut ini contoh skrip yang saya gunakan untuk mendapatkan data dari tabel ini:
<?php
$con = mysql_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db", $con);
$sql=mysql_query("SELECT * FROM buy ORDER BY Date");
while($row = mysql_fetch_array($sql))
{
echo "<li><a href='http://www.website/". $row['Date'].".html'>buy ". date("j, M Y", strtotime($row["Date"]))."</a></li>";
}
mysql_close($con);
?>
Script ini menampilkan setiap tanggal dari tabel, mis
12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011
Saya hanya ingin menampilkan tanggal unik, mis
12.dec.2011
10.dec.2011
Jawaban:
Gunakan operator DISTINCT di MySQL:
sumber
DISTINCT
adalah hanya mengembalikan satu bidang itu ... jadi jika Anda ingin seluruh catatan, DISTINCT tidak bernilai (kecuali jika itu adalah bidang id, dan Anda dapat melakukan kueri kedua di mana id DALAM daftar itu). Kabar baiknya, jika Anda memiliki beberapa hasil duplikat sebagai hasil dari GABUNGAN, Anda dapat melakukan GROUP BY dan mendapatkan hasil lengkap yang difilter.menggunakan
jadi MySQL menghapus duplikat
BTW: menggunakan nama kolom eksplisit dalam
SELECT
menggunakan lebih sedikit sumber daya di PHP ketika Anda mendapatkan hasil besar dari MySQLsumber
Gunakan kueri ini untuk mendapatkan nilai
sumber
date
tetapi berbedadescription
. Menggunakan perintah di atas akan menunjukkan perbedaandate
, tetapi hanyadescription
item pertama yang ditemukan.GROUP BY date,description
.Sisanya hampir benar, kecuali mereka harus memesan dengan DESC Tanggal
sumber
DISTINCT
selalu merupakan pilihan yang tepat untuk mendapatkan nilai unik. Anda juga dapat melakukannya secara alternatif tanpa menggunakannya. ItuGROUP BY
. Yang hanya menambahkan di akhir kueri dan diikuti oleh nama kolom.sumber
DISTINCT
Jawaban lain , tetapi dengan beberapa nilai:sumber
Gunakan sesuatu seperti ini jika Anda juga ingin menampilkan detail produk per tanggal sebagai JSON.
Cobalah di SQL Fiddle
sumber
Ada kata kunci spesifik untuk mencapai hal yang sama.
sumber
Tergantung pada apa yang Anda butuhkan.
Dalam hal ini saya sarankan:
karena ada beberapa bidang dan waktu eksekusi
DISTINCT
lebih rendah daripada eksekusiGROUP BY
.Dalam kasus lain, misalnya di mana ada banyak bidang, saya lebih suka:
sumber