selectarea valorile unice dintr-o coloană

Am un tabel MySQL care conține următoarele tipuri de informații:

    Date            product 
2011-12-12           azd
2011-12-12           yxm
2011-12-10           sdx
2011-12-10           ssdd  

Aici este un exemplu de script-am folosi pentru a obține datele din acest tabel:

<?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);
?> 

Acest script afiseaza de fiecare data de la masă, de exemplu

12.dec 2011
12.dec.2011
10.dec.2011
10.dec.2011

Aș dori pentru a afișa numai unică de date, de exemplu

12.dec.2011
10.dec.2011
Comentarii la întrebare (1)
Soluția

Utilizați DISTINCT operator în MySQL:

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;
Comentarii (2)

utilizarea

SELECT DISTINCT Date FROM buy ORDER BY Date

deci MySQL elimină duplicate

BTW: folosind explicit nume de coloane în "SELECTAȚI" utilizează mai puține resurse în PHP atunci când te're obtinerea un mare rezultat din MySQL

Comentarii (6)

Utilizați această interogare pentru a obține valori

SELECT * FROM `buy` group by date order by date DESC
Comentarii (2)

Restul sunt aproape corectă, doar că ei ar trebui să comand de Data DESC

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;
Comentarii (1)

DISTINCT este mereu o alegere potrivita pentru a obține valori unice. De asemenea, puteți face alternativ fără a-l folosi. Ca's GROUP BY. Care are pur și simplu adăugați la sfârșitul interogare și urmat de numele de coloană.

SELECT * FROM buy GROUP BY date,description
Comentarii (0)

Un alt DISTINCT a răspuns, dar cu mai multe valori:

SELECT DISTINCT `field1`, `field2`, `field3` FROM `some_table`  WHERE `some_field` > 5000 ORDER BY `some_field`
Comentarii (0)

Folosi ceva de genul asta în cazul în care doriți, de asemenea, pentru produsele de ieșire detaliile pe data JSON.

SELECT `date`,
CONCAT('{',GROUP_CONCAT('{\"id\": \"',`product_id`,'\",\"name\": \"',`product_name`,'\"}'),'}') as `productsJSON`
FROM `buy` group by `date` 
order by `date` DESC

 product_id product_name     date  
|    1     |     azd    | 2011-12-12 |
|    2     |     xyz    | 2011-12-12 |
|    3     |     ase    | 2011-12-11 |
|    4     |     azwed  | 2011-12-11 |
|    5     |     wed    | 2011-12-10 |
|    6     |     cvg    | 2011-12-10 |
|    7     |     cvig   | 2011-12-09 |

RESULT
       date                                productsJSON
2011-12-12T00:00:00Z    {{"id": "1","name": "azd"},{"id": "2","name": "xyz"}}
2011-12-11T00:00:00Z    {{"id": "3","name": "ase"},{"id": "4","name": "azwed"}}
2011-12-10T00:00:00Z    {{"id": "5","name": "wed"},{"id": "6","name": "cvg"}}
2011-12-09T00:00:00Z    {{"id": "7","name": "cvig"}}

Încercați să-l în SQL Vioara

Comentarii (0)

Depinde de ce ai nevoie.

În acest caz, vă sugerez:

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;

pentru că există câteva domenii și timpul de execuție a DISTINCT este mai mic decât execuția GRUPULUI DE`.

În alte cazuri, de exemplu în cazul în care există mai multe domenii, prefer:

SELECT * FROM buy GROUP BY date ORDER BY date DESC;
Comentarii (0)

Există un anumit cuvânt cheie pentru a obține același.

SELECT DISTINCT( Date ) AS Date 
FROM   buy 
ORDER  BY Date DESC; 
Comentarii (0)