itsource

열에서 고유한 값 선택

mycopycode 2022. 10. 26. 22:39
반응형

열에서 고유한 값 선택

다음 유형의 정보가 포함된 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에서 DISTINT 연산자를 사용합니다.

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으로 날짜별 제품 세부 정보를 출력하고 싶은 경우 및MySQL버전이 지원하지 않음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 Fielen에서 시험해 보다

를 사용하고 있는 경우MySQL가 지원하는 버전JSON위의 쿼리를 다시 작성할 수 있습니다.

SELECT `date`,JSON_OBJECTAGG(CONCAT('product-',`product_id`),JSON_OBJECT('id', `product_id`, 'name', `product_name`)) as `productsJSON`
FROM `buy` group by `date`
order by `date` DESC;

DB Fielen에서 둘 다 시도합니다.

네가 뭘 필요로 하느냐에 달렸어.

이 경우 다음을 권장합니다.

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

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

다른 경우(예를 들어 필드가 많은 경우)에는 다음과 같이 하는 것이 좋습니다.

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

같은 것을 실현하기 위한 특정 키워드가 있습니다.

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

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

반응형