복붙노트

[SQL] 컬럼에서 고유 한 값을 선택

SQL

컬럼에서 고유 한 값을 선택

나는 다음과 같은 유형의 정보를 포함하는 MySQL의 테이블이 있습니다 :

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

여기이 테이블에서 데이터를 얻기 위해 사용하는 스크립트의 예입니다 :

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

이 스크립트는, 예를 들어, 테이블에서 모든 날짜를 표시

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

나는 단지 예를 들어, 고유 한 날짜를 표시 할 것

12.dec.2011
10.dec.2011

해결법

  1. ==============================

    1.MySQL의에서 DISTINCT 연산자를 사용합니다 :

    MySQL의에서 DISTINCT 연산자를 사용합니다 :

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

    2.사용하다

    사용하다

    SELECT DISTINCT Date FROM buy ORDER BY Date
    

    그래서 MySQL을 제거합니다 중복

    BTW : 당신은 MySQL의에서 큰 결과를 얻는 때 SELECT에서 명시 적 열 이름을 사용하여 PHP에서 더 적은 리소스를 사용

  3. ==============================

    3.값을 얻기 위해이 쿼리를 사용하여

    값을 얻기 위해이 쿼리를 사용하여

    SELECT * FROM `buy` group by date order by date DESC
    
  4. ==============================

    4.그들은 날짜로 주문해야합니다 제외하고 나머지는 거의 정확 DESC

    그들은 날짜로 주문해야합니다 제외하고 나머지는 거의 정확 DESC

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

    5.DISTINCT는 항상 고유 한 값을 얻을 수있는 최적의 선택이 될 것입니다. 또한 당신은 그것을 사용하지 않고 다른 방법으로 그것을 할 수 있습니다. 즉 GROUP BY입니다. 단순히 쿼리의 끝에 추가하고 열 이름 뒤에이있는.

    DISTINCT는 항상 고유 한 값을 얻을 수있는 최적의 선택이 될 것입니다. 또한 당신은 그것을 사용하지 않고 다른 방법으로 그것을 할 수 있습니다. 즉 GROUP BY입니다. 단순히 쿼리의 끝에 추가하고 열 이름 뒤에이있는.

    SELECT * FROM buy GROUP BY date,description
    
  6. ==============================

    6.하지만, 여러 값을 갖는 또 다른 DISTINCT 대답 :

    하지만, 여러 값을 갖는 또 다른 DISTINCT 대답 :

    SELECT DISTINCT `field1`, `field2`, `field3` FROM `some_table`  WHERE `some_field` > 5000 ORDER BY `some_field`
    
  7. ==============================

    7.JSON과 같은 날짜에 따라 출력 제품 세부 사항에 당신은 또한 원하는 경우 같은 것을 사용합니다.

    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"}}
    

    SQL 바이올린에 그것을 밖으로 시도

  8. ==============================

    8.하여이를 달성하기위한 구체적인 키워드가있다.

    하여이를 달성하기위한 구체적인 키워드가있다.

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

    9.당신이 필요에 따라 달라집니다.

    당신이 필요에 따라 달라집니다.

    이 경우에는 내가 제안 :

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

    거기에 몇 가지 분야이며, DISTINCT의 실행 시간은 GROUP BY의 실행보다 낮은 때문이다.

    다른 경우에는, 많은 분야가 예를 들어, 내가 선호 :

    SELECT * FROM buy GROUP BY date ORDER BY date DESC;
    
  10. from https://stackoverflow.com/questions/8571902/selecting-unique-values-from-a-column by cc-by-sa and MIT license