열에서 고유한 값 선택
다음 유형의 정보가 포함된 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: 명시적 열 이름 사용SELECT
MySQL에서 큰 결과를 얻었을 때 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"}}
를 사용하고 있는 경우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
'itsource' 카테고리의 다른 글
판다들은 각 그룹에서 최고 n개의 기록을 가지고 있다. (0) | 2022.10.26 |
---|---|
Python에서 객체에 속성이 있는지 확인하려면 어떻게 해야 합니까? (0) | 2022.10.26 |
콜과 신청의 차이점은 무엇입니까? (0) | 2022.10.26 |
'/var/run/mysqld/mysqld 소켓을 통해 로컬 MySQL 서버에 연결할 수 없습니다.sock'(111 "Connection rejected"), (0) | 2022.10.26 |
Python에서 정수를 문자열로 변환 (0) | 2022.10.26 |