从同一个表中选择,其中两列匹配,第三个不匹配
我有表格fedcodes列FEATURE_NAME
,STATE_ALPHA
,COUNTY_NAME
和人口数据 - 其他数据。 我需要选择FEATURE_NAME
和STATE_ALPHA
匹配的所有条目,而COUNTY_NAME
是不同的。我还需要来自这些行的所有数据,而不仅仅是列出的三个数据。 此外,我需要在输出列表中显示这两个/所有/这样的事件。请帮忙。从同一个表中选择,其中两列匹配,第三个不匹配
我试过内连接,但它不会在同一张桌子上工作。我也试过以下脚本:
选择fedcodes。来自fedcodes组的,count()num,FEATURE_NAME
,STATE_ALPHA
FEATURE_NAME
,STATE_ALPHA
,num> 1 ORDER BY fedcodes
。 FEATURE_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只在一个县,所以我不需要那个选择。我希望这个例子能更好地解释一些事情。
下面是一些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
当我添加line1中表中的所有字段时,它将返回:字段列表中的列'FEATURE_CLASS'不明确 – 2013-05-10 20:25:43
您需要指定它来自哪个fedcodes表的实例。尝试'T1.FEATURE_CLASS',它可以让它知道从哪个副本中选择该字段。 – 2013-05-10 20:27:19
#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
这一个返回整个表格。即使列中有一个条目,它也会在表格的第二个实例中的同一列中进行匹配。 – 2013-05-10 20:29:18
@ user2364198你看看我提供的sqlfiddle吗?请提供样本数据(少数相关行)。 – peterm 2013-05-10 20:32:52
我附上了一些示例行和简短说明。对不起,我也很喜欢使用*。 :( – 2013-05-10 20:50:37
还有,你试过吗? – aweis 2013-05-10 20:13:39
此问题没有显示任何研究工作。 **做你的作业很重要**。告诉我们你发现了什么,***为什么它不符合你的需求。这表明你已经花时间去尝试帮助你自己了,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案。 [FAQ](http://*.com/questions/how-to-ask)。 – Kermit 2013-05-10 20:14:24
我的错误。我专注于发布问题,所以忘了添加我曾尝试过的。我编辑了这篇文章并添加了我的尝试。请理解,我并不太熟悉MYSQL。 – 2013-05-10 20:18:52