我认为这是一个相当简单的问题,但有点难以解释。
让我们从状态符号列表开始 - 状态标志,鲜花,鸟类等。我的MySQL数据库中的行将每个符号与其页面出现的URL相匹配。因此,如果字段Designation ='flower',那么URL将是arizona / flower,new-york / flower或类似的东西。
但是,有些州有不同类别的多个符号;例如两只状态的鸟,三种状态的鲜花等。让它更加混乱,我还没弄明白我是否应该在一个页面上描述所有州的花卉符号,或者为每个花卉符号制作一个独特的页面。
目前,我正在通过耳朵播放,如下面的数据库数据所示。在这个例子中,Arizona有两个花符号,每个花符号在同一页面上讨论(URL = arizona / flower)。
+----------+-----------------+-------------+
| State-ID | URL | Designation |
+----------+-----------------+-------------+
| us-az | arizona/flower | flower |
| us-az | arizona/flower | flower |
| us-az | arizona/tree | tree |
| us-fl | florida/mammal | mammal |
| us-fl | florida/mammal2 | mammal |
| us-fl | florida/mammal2 | mammal |
| us-fl | florida/mammal3 | mammal |
| us-fl | florida/bird | bird |
| us-fl | florida/bird2 | bird |
+----------+-----------------+-------------+
然而,佛罗里达州有四种官方哺乳动物。第一个(佛罗里达黑豹)被讨论@ mysite /佛罗里达/哺乳动物。这两种海洋哺乳动物在mysite /佛罗里达/哺乳动物2中进行了讨论,而国家马则以@ mysite / florida / mammal3为特色。
所以这是我的问题:我如何编写一个查询1)区分单个名称(例如亚利桑那州的州树)和多个名称(例如亚利桑那州的州花)和2)也告诉我多个名称是否与单个网址还是多个网址?
我需要一段时间才能解决所有问题,但是,现在,如果我的查询只列出多个网址,那将会非常有用。例如,它甚至不会显示亚利桑那州的州树。该查询可以作为我的符号列表的快照,帮助我识别所有多个名称,以及哪些名称链接到单个URL和多个URL。
我在Mac上使用PHP和MySQL。
P.S。我应该指出,还有其他字段,包括赋予符号特定值的字段(例如'佛罗里达黑豹','海牛','海豚','饼干马')。
答案 0 :(得分:1)
您可以使用HAVING子句过滤聚合函数
SELECT State-ID, Designation, COUNT(*) AS cnt
FROM stateTable
GROUP BY State-ID,Designation
HAVING COUNT(*)>1
这将为您提供表中包含多行的所有State-ID,Designation组合。如果您还按网址分组,则可以确定他们是否共享网址。
基本上你应该阅读MySQL中的分组和聚合:12.15.1 GROUP BY (Aggregate) Functions和MySQL SELECT Syntax
答案 1 :(得分:1)
SELECT `State-ID`, Designation, COUNT(*) all_count, COUNT(DISTINCT URL) url_count
FROM YourTable
GROUP BY `State-ID`, Designation
url_count
会告诉您他们是否链接到相同的网址或不同的网址。您可以添加HAVING url_count > 1
以仅将结果限制为链接到多个网址的项目。