MySQL:选择不同的多列

3

我的MySQL查询看起来像这样:

SELECT DISTINCT ip, title, url
FROM stats;

我的目标是选择每个不同的ip对应的一行,同时包括titleurl;然而我发现当我在查询中添加titleurl字段时,它会显示所有行。

样例数据

ip          title      url
---------------------------
127.0.0.1   title      url
127.0.0.2   title      url
127.0.0.1   difftitle  url

Result I would like

ip          title      url
---------------------------
127.0.0.1   title      url
127.0.0.2   title      url

不是特别清楚,请在问题中提供一些示例数据和期望的结果输出。 - Abhik Chakraborty
1
如果您有两个具有相同IP的不同标题或URL,您想选择哪一个? - vathek
3
第一次出现?除非您使用另一列定义它,在关系数据库中没有“第一次”,这很令人困惑。我认为您想要具有唯一IP的行?从示例数据中,期望的结果是什么? - fancyPants
你想从所提供的样本数据中选择哪些数据? - Eilidh
1
那么您只想要每个“ip”仅有一个titleurl吗?是什么决定了展示哪个titleurl?或者您不关心展示哪一个? - Eilidh
显示剩余4条评论
1个回答

5
我认为您需要的查询类似于这样 -
SELECT 
    ip,
    title,
    url
FROM 
    stats
GROUP BY 
    ip 
GROUP BY类似于DISTINCT——它意味着所有结果将按ip分组,因此它只会显示每个不同的ip的一个结果行。然而,没有任何东西可以决定返回哪条记录(例如将显示哪个titleurl)。
数据库中没有“第一个”条目——关系型数据库没有像这样的“顺序”,除非您选择按字段排序。

标题和URL也需要放在按组分组中,或者需要在选择语句中放入一些聚合函数,如max()。 - donstack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接