문제

다음과 같은 SQL 결과에서 배열 (PHP)을 만들고 싶습니다. 이름 그리고 메시지.예시:

이름 | 메시지

존 | 안녕하십니까

닉 | 좋은 날

조지 | 안녕

존 | 어디

내가 원하는 것은 메시지를 게시했지만 같은 이름을 1 회 이상 표시하지 않는 사람들의 이름을 출력하십시오.. 따라서 출력은 John, Nick, George입니다. (이 기록에서 우리는 John이 2 개의 메시지를 게시했지만 최종 출력에서는 그의 이름 만 볼 수 있습니다).

이것은 어떻게 든 가능합니까? 미리 감사드립니다.

도움이 되었습니까?

해결책

노력하다:

$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
  $names[] = $row[0];
}
print_r($names);

다른 팁

별개의 선택을 선택하십시오

SQL 쿼리를 실행하여 별개의 이름 만 선택할 수 있습니다.

SELECT DISTINCT Name FROM Posts;

이렇게하면 별개의 이름 값으로 구성된 결과 세트가 제공되며 각 고유 값은 세트에서 1 회 반환됩니다.

카운트를 얻으려면 그룹을 사용하여 집계해야합니다.

SELECT NAME , COUNT(*) as Posts FROM Posts GROUP BY NAME

그룹에 반대하지 않는 경우 SQL은 다음과 같습니다.

select count(name) as N, name from posts group by name ;

게시물이 둘 이상인 사람들

select count(name) as N, name from posts group by name having N > 1 ;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top