【发布时间】:2012-04-06 22:08:05
【问题描述】:
我有一些类似的 MySQL 表:
ids urns urn_urls urls
id | type id | uid | urn uid | lid lid | url
---+----- ---+-----+----- ----+---- ----+----
1 | 1 1 | 1 | urn1 1 | 1 1 | url1
2 | 4 2 | 2 | urn2 1 | 2 2 | url2
3 | 4 2 | 3 | urn3 2 | 3 3 | url3
4 | 4 3 | 4 | urn4 2 | 4 4 | url4
...|... 3 | 5 | urn5 3 | 4 5 | url5
. 4 | 6 | urn6 4 | 5 6 | url6
. ...| ... | ... 5 | 5 ...| ...
. 6 | 1
. 6 | 6
我想要的是一个查询,它列出了类型 4 的那些 id 条目,这些条目与多个瓮和对应的瓮相关,如下所示:
result
id | url
---+-----
2 | url3
2 | url4
4 | url1
4 | url6
我已经尝试过这样的事情:
SELECT id,url
FROM ids
NATURAL JOIN urns
NATURAL JOIN urn_urls
NATURAL JOIN urls
WHERE type=4
HAVING count( #column# )>1;
使用#column# 之一(id、lid、url),但它只返回行;
当我添加 GROUP BY 声明时,我得到了更多,但不是适当的结果
SELECT id,url
FROM ids
NATURAL JOIN urns
NATURAL JOIN urn_urls
NATURAL JOIN urls
WHERE type=4
GROUP BY #group#
HAVING count( #column# )>1;
对于#group# / #column# 的不同组合(id、lid、url)。
因此,感谢您的帮助。
【问题讨论】:
-
为什么
urn1应该出现在结果中?它连接到 id 1,其类型为 1,而不是 4。 -
我的错。结果应该包含网址;)我会编辑这个
标签: mysql select count conditional-statements having