求正确SQL的写法。
1.问题:我一直不清楚一个SQL算出一个特定结果的写法,想向大神请教
2.代码:
<code>SELECT tb.*,tbc.`comment` from blog_tinyblog AS tb,blog_tbcomment AS tbc where tb.user_id=tbc.user_id AND tb.num=tbc.now_num group by tbc.num_tiny_blog </code>
我写的SQL是这样的,结果如图:
可这并不是我想要的结果,我希望去除重复,将comment存储为一个数组,成为只有一条结果的形式,请大神赤脚。也许可能会说用 distinct,但是不行
目的:我想写个微博评论系统 【现在是想显示出每条微博对应的评论】
回复内容:
1.问题:我一直不清楚一个SQL算出一个特定结果的写法,想向大神请教
2.代码:
<code>SELECT tb.*,tbc.`comment` from blog_tinyblog AS tb,blog_tbcomment AS tbc where tb.user_id=tbc.user_id AND tb.num=tbc.now_num group by tbc.num_tiny_blog </code>
我写的SQL是这样的,结果如图:
可这并不是我想要的结果,我希望去除重复,将comment存储为一个数组,成为只有一条结果的形式,请大神赤脚。也许可能会说用 distinct,但是不行
目的:我想写个微博评论系统 【现在是想显示出每条微博对应的评论】
我来打击一下你:
你的数据库设计有些问题。建议在做东西的时候将mysql相关的书看一下。(关联用num?)
GROUP BY的用法
sql语句查询的时候大写会提高一丝丝效率,但是你这样关键字大小写混合就不要用了
select tb.*,tbc.comment
from blog_tinyblog as tb,blog_tbcomment as tbc
where tb.num=tbc.num_tiny_blog如果说上面的这些都能够忍受的话,那我就只能拿你问问题的格式来说事儿了 排版乱,逻辑乱 而且你还用图片,难道让我们敲上去试试?
大部分ORM一般有两种方式解决此类问题:
采用的
Lazy Load
方式,其实原理很简单:就是取两次,第一次取blog,第二次取blog对应的comment,只不过第二次取的操作延迟执行。第二种就是题主这种一次查询的方式,只是ORM会根据查询的结果映射成你想要的那种形式(单个Blog对象中包含对应的Comment列表)。
所以综上,如果题主正在使用一种ORM工具,一般都包含这两种方式的处理;如果没有使用任何ORM,那题主需要自己实现一个对应的算法(其实就是一个类似reduce的算法)。
我没看懂你的意思。
你想要做什么。
首先你这全链接查询一般是没必要的。
再者没有聚集函数你用分组没有什么意义。
最佳方案是只获取微博和评论数就行了,具体的评论可以用ajax去取,没必要一次取出来,这样压力比较大。
如果你一定要一次取出来可以考虑group_concat这个函数,具体去查mysql手册,但是不推荐,如果评论很多的话这个效率会非常低甚至产生错误。
此外你的表设计也不合理。比如第几条微博,第几条评论,无评论 这三种注释代表的字段根本没用,用户删微博或者删评论的时候你也要在多条记录上维护相应的数据,麻烦死了。微博表有一个total_comments字段就足够了。至于到底是第几条,显示的时候自然就知道了,序号肯定是 (页码-1)*每页显示的记录数 + 当前页的第几行,所以没必要放在数据库里面。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。
