MySQL学习足迹记录14--表别名和自联结_MySQL
bitsCN.com
MySQL学习足迹记录14--表别名和自联结
本查询所用到的表:
下面的表num代表公共汽车路线,如1路车,2路车,stop带表停车站点,如A站,B站
表:
route;+------+------+| num | stop |+------+------+| 1 | A || 1 | B || 1 | C || 2 | B || 2 | C || 2 | D |+------+------+
准备知识
1.使用表别名
*表别名只在查询执行中使用
*表别名不返回到客户机
Example: mysql> SELECT * from route AS r1 -> WHERE r1.num = 1;+------+------+| num | stop |+------+------+| 1 | A || 1 | B || 1 | C |+------+------+3 rows in set (0.00 sec)
解析:
相信理解表别名应该不费力,类似与列别名,表别名只是给表取另外一个名字而已,代表的还是相同的表
2.自联结
*自联结通常作为外部语句来代替从相同表中检索数据时使用的子查询语句
*使用表别名能在单条语句中多次使用相同的表
下面给出一个简单的例子帮助理解自联结的原理
Example:
下面的语句查询的结果是共用同一车站的所有公交线
mysql> SELECT DISTINCT r2.num,r2.stop -> FROM route AS r1,route AS r2 -> WHERE r1.stop = r2.stop -> ORDER BY r2.stop;+------+------+| num | stop |+------+------+| 1 | A || 1 | B || 2 | B || 1 | C || 2 | C || 2 | D |+------+------+6 rows in set (0.00 sec)
解析:
第一句
mysql> SELECT DISTINCT r2.num,r2.stop -> FROM route AS r1,route AS r2;
为了详解,这里先去除DISTINCT关键字,并只截取下面的子句
mysql> select * From route AS r1,route r2;+------+------+------+------+| num | stop | num | stop |+------+------+------+------+| 1 | A | 1 | A || 1 | B | 1 | A || 1 | C | 1 | A || 2 | B | 1 | A || 2 | C | 1 | A || 2 | D | 1 | A || 1 | A | 1 | B || 1 | B | 1 | B || 1 | C | 1 | B || 2 | B | 1 | B || 2 | C | 1 | B || 2 | D | 1 | B || 1 | A | 1 | C || 1 | B | 1 | C || 1 | C | 1 | C || 2 | B | 1 | C || 2 | C | 1 | C || 2 | D | 1 | C || 1 | A | 2 | B || 1 | B | 2 | B || 1 | C | 2 | B || 2 | B | 2 | B || 2 | C | 2 | B || 2 | D | 2 | B || 1 | A | 2 | C || 1 | B | 2 | C || 1 | C | 2 | C || 2 | B | 2 | C || 2 | C | 2 | C || 2 | D | 2 | C || 1 | A | 2 | D || 1 | B | 2 | D || 1 | C | 2 | D || 2 | B | 2 | D || 2 | C | 2 | D || 2 | D | 2 | D |+------+------+------+------+36 rows in set (0.00 sec)
从上面的查询结果中可以看出,共有36条记录(刚好是两张表的笛卡尔积,关于笛卡尔积,请点击MySQL学习足迹记录13--联结表),
可一推测,所谓的自联结就是把同一张表,看成独立的,不同的两张表r1,r2
我们的目的是查询共用同一车站的所有公交线,所以从上表的结果集中再添加筛选条件(令车站相等):
r1.stop = r2.stopmysql> SELECT * FROM route AS r1,route AS r2 -> WHERE r1.stop = r2.stop; +------+------+------+------+| num | stop | num | stop |+------+------+------+------+| 1 | A | 1 | A || 1 | B | 1 | B || 2 | B | 1 | B || 1 | C | 1 | C || 2 | C | 1 | C || 1 | B | 2 | B || 2 | B | 2 | B || 1 | C | 2 | C || 2 | C | 2 | C || 2 | D | 2 | D |+------+------+------+------+10 rows in set (0.00 sec)
这已经很接近所需的结果了,但我们只需num,stop两列,再添加
SELECT r2.num,r2.stop (SELECT r1.num,r1.stop也OK) mysql> SELECT r2.num,r2.stop -> FROM route AS r1,route r2 -> WHERE r1.stop = r2.stop;+------+------+| num | stop |+------+------+| 1 | A || 1 | B || 1 | B || 1 | C || 1 | C || 2 | B || 2 | B || 2 | C || 2 | C || 2 | D |+------+------+10 rows in set (0.00 sec)
最后去除相同的记录,再按车站排序
mysql> SELECT DISTINCT r2.num,r2.stop -> FROM route AS r1,route AS r2 -> WHERE r1.stop = r2.stop -> ORDER BY r2.stop;+------+------+| num | stop |+------+------+| 1 | A || 1 | B || 2 | B || 1 | C || 2 | C || 2 | D |+------+------+6 rows in set (0.00 sec)
从结果集中可以看出1路车和2路 车共用B,C车站
bitsCN.com
ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











Pinduoduo ソフトウェアは多くの優れた製品を提供し、いつでもどこでも購入でき、各製品の品質は厳しく管理され、すべての製品は正規品であり、多くの優遇ショッピング割引があり、誰もがオンラインで買い物をすることができます。携帯電話番号を入力してオンラインにログインし、オンラインで複数の配送先住所や連絡先情報を追加し、最新の物流動向をいつでも確認できます さまざまなカテゴリの商品セクションが開き、検索して上下にスワイプして購入および注文することができます家から出ることなく利便性を体験することができます.オンライン ショッピング サービスでは、購入した商品を含むすべての購入記録を確認することもでき、数十のショッピング赤い封筒とクーポンを無料で受け取ることもできます.今回、編集者は Pinduoduo ユーザーに詳細なオンライン サービスを提供しました購入した製品の記録を表示する方法。 1. 携帯電話を開き、Pinduoduo アイコンをクリックします。

Linux でコマンド履歴を表示する方法 Linux では、history コマンドを使用して、以前に実行されたすべてのコマンドのリストを表示します。構文は非常に単純です:history History コマンドと組み合わせるオプションには次のものがあります: オプションの説明 -c 現在のセッションのコマンド履歴をクリアします -w コマンド履歴をファイルに書き込みます -r 履歴ファイルからコマンド履歴を再ロードします - n 最近のコマンドの出力数を制限するhistory コマンドを実行するだけで、Linux ターミナルで以前に実行されたすべてのコマンドのリストが表示されます。コマンド履歴の表示に加えて、コマンド履歴を管理したり、以前に実行したコマンドの変更を実行したり、逆に実行したりすることもできます。コマンド履歴を検索したり、履歴を完全に削除したりすることもできます

iPhone の通話録音は過小評価されがちですが、iPhone の最も重要な機能の 1 つです。この機能はシンプルであるため非常に重要であり、デバイス上で発信または受信された通話に関する重要な洞察を提供できます。仕事の目的でも、法的手続きの場合でも、通話記録にアクセスできる機能は非常に貴重であることがわかります。簡単に言うと、通話履歴とは、電話をかけたり受けたりするたびに iPhone に作成されるエントリを指します。これらのログには、連絡先の名前 (連絡先として保存されていない場合は番号)、タイムスタンプ、継続時間、通話ステータス (ダイヤル、不在、応答なし) などの重要な情報が含まれています。これらはあなたの通信履歴の簡潔な記録です。通話履歴には、iPhone に保存されている通話履歴ストリップが含まれます

C# 開発に関する提案: ログおよび監視システムの概要: ソフトウェア開発プロセスでは、ログおよび監視システムは重要なツールです。この記事では、C# 開発におけるログ記録および監視システムの役割と実装に関する提案を紹介します。はじめに: ロギングとモニタリングは、大規模なソフトウェア開発プロジェクトにおいて不可欠なツールです。これらは、プログラムの実行状況をリアルタイムで把握し、問題を迅速に発見して解決するのに役立ちます。この記事では、C# 開発でログおよび監視システムを使用してソフトウェアの品質と開発効率を向上させる方法について説明します。ロギングシステムの役割

iPhone では、ヘルスケア App に薬を追加して、毎日摂取する薬、ビタミン、サプリメントを追跡および管理できます。デバイスで通知を受信したときに、服用した薬またはスキップした薬を記録できます。薬を記録すると、どれくらいの頻度で薬を服用したか、または服用しなかったかを確認できるので、健康状態を追跡するのに役立ちます。この記事では、iPhone のヘルスケア アプリで選択した薬のログ履歴を表示する方法を説明します。ヘルスケア アプリで薬の記録履歴を表示する方法に関する短いガイド: ヘルスケア アプリ > 参照 > 薬 > 薬 > 薬の選択 > オプション&a に移動します。

人間の歩行と同様に、自動運転車も移動プロセスを完了するために、交通環境について独自に考え、判断し、意思決定を行う能力が必要です。先進運転支援システム技術の向上により、自動車を運転するドライバーの安全性は向上し続け、ドライバーの運転意思決定への参加度は徐々に低下し、自動運転はますます近づいています。無人車としても知られる自動運転車は、本質的には、ドライバーの支援のみで、またはドライバーの操作をまったく行わずに移動動作を完了できる高度なインテリジェントなロボットです。自動運転は主に知覚層、意思決定層、実行層を通じて実現され、自動運転車として追加のレーダー(ミリ波レーダー、ライダー)、車載カメラ、全地球測位衛星システム(G)を利用することができます。

Java 開発プロジェクトを記録および監視する方法 1. 背景の紹介 インターネットの急速な発展に伴い、ますます多くの企業が Java を開発し、さまざまな種類のアプリケーションを構築し始めています。開発プロセスでは、ロギングとモニタリングは無視できない重要なリンクです。開発者は、ロギングと監視を通じて問題を発見して時間内に解決し、アプリケーションの安定性とセキュリティを確保できます。 2. ログの重要性 1. 問題の追跡: アプリケーション エラーが発生した場合、ログは問題を迅速に特定するのに役立ちます。

01 スケートボードシャーシとは いわゆるスケートボードシャーシは、バッテリー、電装系、サスペンション、ブレーキ等をシャーシ上に予め一体化し、ボディとシャーシの分離・デカップリング設計を実現したものです。このタイプのプラットフォームに基づいて、自動車会社は初期の研究開発とテストのコストを大幅に削減しながら、さまざまなモデルを作成する市場の需要に迅速に対応できます。特に無人運転時代においては、クルマのレイアウトは走行中心ではなく空間性を重視したものとなり、スケートボード型シャシーはアッパーキャビンの開発可能性をさらに広げることができる。もちろん、上の写真のように、スケートボードのシャーシを見たときに、「ああ、耐荷重のないボディだ」という第一印象に囚われてはいけません。当時は電気自動車がなかったため、数百キログラムのバッテリーパックも、ステアリングコラムを不要にするステアリングバイワイヤーシステムも、ブレーキバイワイヤーシステムもありませんでした。
