>백엔드 개발 >PHP 튜토리얼 >Mysql이 여러 테이블을 조인할 때 쿼리 결과에 문제가 있습니다.

Mysql이 여러 테이블을 조인할 때 쿼리 결과에 문제가 있습니다.

WBOY
WBOY원래의
2016-09-29 09:19:061654검색

회사 제품의 요구로 인해 이제 테이블 A는 사용자의 기본 정보를 저장하고 테이블 B는 테이블 A에 사용자의 일부 행동을 저장하는 기능을 구현해야 합니다. 테이블 C와 테이블 B는 동일한 속성을 갖습니다. . 쿼리를 하면 테이블 B나 테이블 C에서 카운트 결과를 기준으로 정렬이 가능해서 조인을 생각했는데 문제가 있었습니다.

먼저 세 테이블의 데이터 구조를 게시하세요

<code>  CREATE TABLE `A` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=1;</code>
<code>  CREATE TABLE `B` (
  `id` int(11) NOT NULL auto_increment,
  `userid` int(11) default NULL,
  `dosomething` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  KEY `userid` USING BTREE (`userid`)
) ENGINE=MyISAM AUTO_INCREMENT=1;</code>
<code>  CREATE TABLE `C` (
  `id` int(11) NOT NULL auto_increment,
  `userid` int(11) default NULL,
  `dosomething` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  KEY `userid` USING BTREE (`userid`)
) ENGINE=MyISAM AUTO_INCREMENT=1;</code>

직접 시도해 보니 쿼리 결과가 달랐습니다

<code>SELECT u.id, COUNT(s.id) AS sapply, COUNT(uu.id) AS ftotal FROM A AS u
 RIGHT JOIN B AS s ON u.id = s.userid
 RIGHT JOIN C AS uu ON u.id = `uu`.`userid`
 GROUP BY `u`.`id` ORDER BY `ftotal` DESC LIMIT 10</code>

Mysql이 여러 테이블을 조인할 때 쿼리 결과에 문제가 있습니다.

데이터에 분명히 문제가 있으니 결과를 따로 확인해주세요

<code>SELECT u.id, COUNT(s.id) AS sapply FROM A AS u
 RIGHT JOIN B AS s ON u.id = s.userid
 GROUP BY `u`.`id` ORDER BY `sapply` DESC LIMIT 10</code>

Mysql이 여러 테이블을 조인할 때 쿼리 결과에 문제가 있습니다.

<code>SELECT u.id, COUNT(uu.id) AS ftotal FROM A AS u
 RIGHT JOIN C AS uu ON u.id = uu.userid
 GROUP BY `u`.`id` ORDER BY `ftotal ` DESC LIMIT 10</code>

Mysql이 여러 테이블을 조인할 때 쿼리 결과에 문제가 있습니다.

도와주세요, 무엇이 문제인가요? 첫 번째 SQL 문에는 오류가 없는데 결과가 잘못되었습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.