0
  $query = "SELECT DISTINCT t.task_id, e.url,e.error_id, p.page_rank, e.scan_status, e.url_is_route,e.url_is_route,e.forbidden_word,e.google_host_fail,e.google_cache_fail,e.google_title_fail,e.robots_noindex_nofollow,e.xrobots_noindex_nofollow,e.title_fetch_warn,e.h1_fail,e.h2_fail,e.h3_fail,e.h1_warn,e.h2_warn,e.h3_warn 
              FROM `error_report` AS e 
              INNER JOIN task_pages AS t ON t.task_id=e.task_id
              INNER JOIN `pages` AS p ON p.page_id=t.page_id
              WHERE t.task_id=" . $this->task_id ;

クエリをt.task_idだけで区別したい。問題は、フィールドを追加すると、クエリが区別できなくなることです。t.task_idのみで区別する方法はまだありますか?

4

2 に答える 2

3

distinct使用する代わりにgroup by

$query = "SELECT t.task_id, e.url,e.error_id, p.page_rank, e.scan_status, e.url_is_route,e.url_is_route,e.forbidden_word,e.google_host_fail,e.google_cache_fail,e.google_title_fail,e.robots_noindex_nofollow,e.xrobots_noindex_nofollow,e.title_fetch_warn,e.h1_fail,e.h2_fail,e.h3_fail,e.h1_warn,e.h2_warn,e.h3_warn 
          FROM `error_report` AS e 
          INNER JOIN task_pages AS t ON t.task_id=e.task_id
          INNER JOIN `pages` AS p ON p.page_id=t.page_id
          WHERE t.task_id=" . $this->task_id
          ."group by t.task_id";
于 2012-05-13T10:56:17.490 に答える
1

さらにフィールドを追加する場合は、GROUP BYiircを使用する必要があります。

追加のフィールド集計である必要があることに注意してください。たとえばMINMAXなど。MySQLはより寛容で、各フィールドの最初の値を表示します(ただし、明らかに確実ではありません)。

于 2012-05-13T10:59:19.337 に答える