0

これはおそらく尋ねられたものですが、私は大規模な 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

誰でも説明できますか:

  • 私はどこで間違ったのですか?
  • 1 か月に 1 回は機能していたのに、機能しなくなった理由として考えられるのは?
  • 私の問題を解決する方法は何ですか?
4

2 に答える 2

3

この部分はサブクエリです。

(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。また、正しい行が返されることを確認する必要がある場合もあります。

于 2013-05-30T13:20:57.103 に答える