我觉得FGraviton接近,但我会写这样的查询:
SELECT *
FROM myTable
GROUP BY state
的DISTINCT并不需要你想要的结果。在另一方面,我可能更喜欢这样的:
SELECT DISTINCT state
FROM myTable
ORDER BY state;
再次,我们需要更好地了解你正在尝试做的,所以我们可以真正谈论如何正确设计数据和查询火鸡。
现在,请记住,破折号的答案会返回碰巧具有'NY'作为其状态的行的所有独特变体。换句话说,可以想象(实际上,理想情况下,假设设计和数据完整性很好),在本例中,不会用DISTINCT *去除单行,因为每行都会(应该/可能)具有某种类型的变体,可能在名称列中。同样,DISTINCT *和WHERE状态='NY'条款不会相互交谈。 DISTINCT只会对查询的结果做出不同的处理。 DISTINCT无法知道你只想要不同的状态。
MySQL文档说DISTINCT c1,c2,c3等同于GROUP BY c1,c2,c3。
我敢肯定,如果我们能够以某种方式弄清楚你想要做什么,我们可以帮助你。
感谢您提供的其他信息。在此基础上的附加信息,这里就是我会做:
SELECT *
FROM geo_locations
WHERE city = 'CITYNAMEHERE'
GROUP BY city, latitude, longitude
ORDER BY city ASC;
当然,这假定每个城市都有一个唯一的真/纬度中。如果有疑问,你可能需要在你的GROUP BY子句中围绕你的纬度/经度,就像这样。
SELECT *, round
FROM geo_locations
WHERE city = 'CITYNAMEHERE'
GROUP BY city, round(latitude, 2), round(longitude, 2)
ORDER BY city ASC;
因此,您只需要返回每个状态的一条记录?你想如何决定哪一个? – Taymon
表是否有主键? –
好的问的问题。你确定你想要*栏吗?你为什么不选择“国家”? –