Programing

열에서 고유 한 값 선택

lottogame 2020. 5. 16. 10:01
반응형

열에서 고유 한 값 선택


다음 유형의 정보가 포함 된 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

MySQL 에서 DISTINCT 연산자를 사용하십시오 .

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

사용하다

SELECT DISTINCT Date FROM buy ORDER BY Date

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

BTW : SELECTMySQL에서 큰 결과를 얻을 때 명시 적 열 이름을 사용하면 PHP에서 적은 리소스 사용합니다.


이 쿼리를 사용하여 값을 얻으십시오.

SELECT * FROM `buy` group by date order by date DESC

나머지는 Date DESC로 주문해야한다는 점을 제외하고는 거의 정확합니다.

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

DISTINCT항상 고유 한 값을 얻는 올바른 선택입니다. 또한 사용하지 않고 대안으로 할 수 있습니다. 그렇습니다 GROUP BY. 쿼리 끝에 추가하고 열 이름을 추가 한 것입니다.

SELECT * FROM buy GROUP BY date,description

또 다른 DISTINCT대답이지만 여러 값이 있습니다.

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

날짜별로 제품 세부 정보를 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 Fiddle 에서 사용해보십시오


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

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

필요한 것에 따라 다릅니다.

이 경우에 나는 제안한다 :

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

필드가 적고의 실행 시간 DISTINCT이의 실행보다 낮기 때문입니다 GROUP BY.

다른 경우, 예를 들어 많은 필드가있는 경우 선호합니다.

SELECT * FROM buy GROUP BY date ORDER BY date DESC;

참고 URL : https://stackoverflow.com/questions/8571902/selecting-unique-values-from-a-column

반응형