从同一个表中选择,其中两列匹配,第三个不匹配

问题描述:

我有表格fedcodes列FEATURE_NAME,STATE_ALPHA,COUNTY_NAME和人口数据 - 其他数据。 我需要选择FEATURE_NAMESTATE_ALPHA匹配的所有条目,而COUNTY_NAME是不同的。我还需要来自这些行的所有数据,而不仅仅是列出的三个数据。 此外,我需要在输出列表中显示这两个/所有/这样的事件。请帮忙。从同一个表中选择,其中两列匹配,第三个不匹配

我试过内连接,但它不会在同一张桌子上工作。我也试过以下脚本:

选择fedcodes。来自fedcodes组的,count()num,FEATURE_NAME,STATE_ALPHA FEATURE_NAMESTATE_ALPHA,num> 1 ORDER BY fedcodesFEATURE_NAME DESC

但我不知道如何添加COUNTY_NAME不相同的术语,它只输出一行,num列显示出现次数。

例子:

ID FEATURE_CLASS FEATURE_ID FEATURE_NAME CENSUS_CODE  CENSUS_CLASS_CODE GSA_CODE OPM_CODE STATE_NUMERIC STATE_ALPHA  COUNTY_SEQUENCE  COUNTY_NUMERIC COUNTY_NAME  DATE_CREATED PRIMARY_LATITUDE PRIMARY_LONGITUDE DATE_EDITED  fips COUNTRY_NAME POPULATION_DATA  city_county_allocate is_county 
    146627 Populated Place  1616849  Wyandotte 88900 P1 5310 265310163 26 MI 1 163  Wayne 1980-04-14 00:00:00  42.2142064 -83.1499239  03/20/2008 26163 US 25883 100  1 
    147139 Populated Place  1617956  Wyandotte 88890 U6 NULL NULL 26 MI 1 61 Houghton 1980-04-14 00:00:00  46.8899335 -88.8754114  NULL 26061 US 0 0 0 

    34 Populated Place  2195 Bumstead 8360 U6 NULL NULL 4 AZ 1 13 Maricopa 1980-02-08 00:00:00  33.5733726 -112.3568269 NULL 04013 US 0 0 0 

-As你可以看到例如Wyandote是两县因此两个项目一个人口数据25883,另一个人口数据0所以我需要这两个条目。而Bumstead只在一个县,所以我不需要那个选择。我希望这个例子能更好地解释一些事情。

+0

还有,你试过吗? – aweis 2013-05-10 20:13:39

+1

此问题没有显示任何研究工作。 **做你的作业很重要**。告诉我们你发现了什么,***为什么它不符合你的需求。这表明你已经花时间去尝试帮助你自己了,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案。 [FAQ](http://*.com/questions/how-to-ask)。 – Kermit 2013-05-10 20:14:24

+0

我的错误。我专注于发布问题,所以忘了添加我曾尝试过的。我编辑了这篇文章并添加了我的尝试。请理解,我并不太熟悉MYSQL。 – 2013-05-10 20:18:52

下面是一些psedo代码,以帮助您入门。基本上你需要使用上面描述的规则将表加回自己,然后返回你需要的任何字段。

SELECT ... -- Add all the field you need from both intances of your table below 
FROM fedcodes T1 -- First instance of your table 
INNER JOIN 
     fedcodes T2 -- Second instance of your table 
ON  T1.FEATURE_NAME = T2.FEATURE_NAME 
AND  T1.STATE_ALPHA = T2.STATE_ALPHA 
AND  T1.COUNTY_NAME <> T2.COUNTY_NAME 
+0

当我添加line1中表中的所有字段时,它将返回:字段列表中的列'FEATURE_CLASS'不明确 – 2013-05-10 20:25:43

+0

您需要指定它来自哪个fedcodes表的实例。尝试'T1.FEATURE_CLASS',它可以让它知道从哪个副本中选择该字段。 – 2013-05-10 20:27:19

+0

#1064 - 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以便在'COUNTY_NUMERIC',fedcodes.COUNTY_NAME',fedcodes.'DATE_CREATED',第1行的fedcodes.'PRI'附近使用正确的语法 – 2013-05-10 20:37:49

尝试

SELECT f1.* 
FROM fedcodes f1 JOIN 
     fedcodes f2 ON f1.feature_name = f2.feature_name 
       AND f1.state_alpha = f2.state_alpha 
       AND f1.county_name <> f2.county_name 

SQLFIddle

+0

这一个返回整个表格。即使列中有一个条目,它也会在表格的第二个实例中的同一列中进行匹配。 – 2013-05-10 20:29:18

+0

@ user2364198你看看我提供的sqlfiddle吗?请提供样本数据(少数相关行)。 – peterm 2013-05-10 20:32:52

+0

我附上了一些示例行和简短说明。对不起,我也很喜欢使用*。 :( – 2013-05-10 20:50:37