这可能已被问到,但由于我是一个庞大的 PHP/MySQL 菜鸟,我真的不知道我在寻找什么。我正在执行以下查询:
SELECT shortlink_analytics.shortlink AS short,
COUNT(shortlink_analytics.shortlink) AS shortcount,
(SELECT link FROM shortlinks WHERE shortlinks.shortlink = shortlink_analytics.shortlink) AS shLink
FROM shortlink_analytics JOIN shortlinks ON shortlink_analytics.shortlink = shortlinks.shortlink
GROUP BY shortlink_analytics.shortlink
ORDER BY COUNT(shortlink_analytics.shortlink) DESC LIMIT 10
这曾经有效,但在上周重新访问它后,我注意到输出没有有效,而是显示了以下错误:
Subquery returns more than 1 row
在研究了代码之后,我发现问题出在(我认为!)以下方面(但我不太确定):
GROUP BY shortlink_analytics.shortlink
ORDER BY COUNT(shortlink_analytics.shortlink) DESC LIMIT 10
谁能解释一下:
- 我哪里做错了?
- 关于为什么它工作一个月然后停止工作的可能原因?
- 解决我的问题的方法是什么?
最佳答案
这部分是子查询:
(SELECT link FROM shortlinks WHERE shortlinks.shortlink = shortlink_analytics.shortlink)
你能简单地LIMIT
它到 1 行吗?
(SELECT link FROM shortlinks WHERE shortlinks.shortlink = shortlink_analytics.shortlink LIMIT 1)
您应该尝试找出您的数据返回多行的原因,您甚至可能需要ORDER BY
以确保返回正确的行。
关于PHP/MySQL 子查询返回多于 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837319/