检查id连接3个表

时间:2012-07-25 07:24:32

标签: mysql

我有一个MySQL JOIN查询,其中有两个表连接以获得输出

select distinct (a.error_type),a.links_id, a.crawl_cycle , b.* from $table a inner join crawler_error_type b on a.error_type = b.error_type where a.projects_id = '$pid' and b.error_priority_page_level='High'

现在我想检查第三个表中是否存在字段error_type的值。如果它存在,那么它不应该给我结果行。

3 个答案:

答案 0 :(得分:0)

您需要在INNER JOIN上再添加一个third_table作为:

SELECT DISTINCT a.error_type, a.links_id, a.crawl_cycle , b.* 
FROM  $table a 
      INNER JOIN crawler_error_type b 
          ON a.error_type = b.error_type 
      INNER JOIN third_table c
          ON a.error_type = c.error_type 

WHERE a.projects_id = '$pid' AND 
      b.error_priority_page_level='High'.

答案 1 :(得分:0)

添加以下内容:

LEFT OUTER JOIN third_table c ON c.error_type = a.error_type 

WHERE c.error_type is null

LEFT OUTER JOIN将显示加入third_table的表中的所有记录。由于您不希望记录具有来自third_table的匹配错误类型,请使用WHERE c.error_type is null

答案 2 :(得分:0)

如果我理解正确,你应该能够内部加入第三个表。如果连接表中有记录,则内连接将显示记录。如果我误会你能详细说明吗。 THX

select distinct (a.error_type),a.links_id, a.crawl_cycle , b.* 

from $table a 

inner join crawler_error_type b on a.error_type = b.error_type 

inner join some_table_3 c on c.error_type = a.error_type 

where a.projects_id = '$pid' and b.error_priority_page_level='High'