关于MySql 和SqlServer 中left join , full join的一点区别
刚刚在用mysql写一个select语句,中间用到了一些连接方面的功能,发现这2者还是有不少区别的。 首先交代一下环境: OS:windows 2003 MySql:Server version 5.0.37 SqlServer:2000 + sp4 题目简化后是这样的: 3张表 st, rk, ck, st(id int) id 1 2 3 4
刚刚在用mysql写一个select语句,中间用到了一些连接方面的功能,发现这2者还是有不少区别的。
首先交代一下环境:
OS:windows 2003
MySql:Server version 5.0.37
SqlServer:2000 + sp4
题目简化后是这样的:
3张表 st, rk, ck,
st(id int)
id |
1 |
2 |
3 |
4 |
5 |
rk(id int fk st.id, rk int)
id | rk |
1 | 4 |
2 | 5 |
3 | 6 |
ck(id int fk st.id, ck int)
id | ck |
2 | 3 |
3 | 4 |
4 | 1 |
现在要求用一条select实现这样的输出效果
id | rk | ck |
1 | 4 | 0 |
2 | 5 | 3 |
3 | 6 | 4 |
4 | 0 | 1 |
由于我用的MySql的编辑器不是很方便,所以想干脆先在SqlServer里面模拟一下看看。
利用full join,很快实现了我想要的结果,语句如下
select isnull(rk.id,ck.id) id,isnull(rk,0) rk,isnull(ck,0) ck
from rk
full join ck
on rk.id = ck.id
然后把语句放到MySql里,问题就来了,直接报错,提示是full join出错,没有这样的语法。
我怀疑是不是MySql不支持full join,然后到google上看了一下,看到不少都是直接用的full join做的,即
select ifnull(rk.id,ck.id) id,ifnull(rk,0) rk,ifnull(ck,0) ck
from rk
full join ck
on rk.id = ck.id
这里MySql的ifnull函数等同于SqlServer的isnull函数,即如果arg1为null,返回arg2,否则返回arg1。
但是我怎么调都不对。
到官网上看了下,一是也没找到详细说明。后来在一篇文章中看到,原来5.1+的版本才有full join。OMG~~~~~~
之前基本都是用left join ,right join组合来模拟。
看到这里我也想开了,撞到墙后不是回头,而是跨过去。
利用了left 再left,实现了上面的效果:
select st.id,ifnull(rk.rk,0) as rk,ifnull(ck.ck,0) as ck
from st
left join rk on (st.id = rk.id)
left join ck on (st.id = ck.id)
where rk != 0 or ck != 0
当然,也可以仿照上面文章的方法,利用left union right
select * from rk
left join ck on rk.id = ck.id
union
select * from rk
right join ck on rk.id = ck.id
好像更容易理解一点,也更通用。估计SqlServer内部也就是这样实现的。full join 是sql92标准。
还有一点区别:
MySql支持这样的join语法,SqlServer不支持
select *
from st
left join (ck,rk)
on (rk.id = st.id and ck.id = st.id)
结果是这样
id | rk | ck |
1 | ||
2 | 5 | 3 |
3 | 4 | 6 |
4 | ||
5 |
可以看出,并不是我上面想要的。具体这个语法是什么没有细究,感觉应该是join括号里面的先做连接。
或者说left join(A, B)是一个"join 与"的写法,而left join A XXXXXX left join B XXXXXX 是"join 或"。
估计前者不是sql92。
MySql,full join,left join

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



MySQL ist für Anfänger geeignet, da es einfach zu installieren, leistungsfähig und einfach zu verwalten ist. 1. Einfache Installation und Konfiguration, geeignet für eine Vielzahl von Betriebssystemen. 2. Unterstützung grundlegender Vorgänge wie Erstellen von Datenbanken und Tabellen, Einfügen, Abfragen, Aktualisieren und Löschen von Daten. 3. Bereitstellung fortgeschrittener Funktionen wie Join Operations und Unterabfragen. 4. Die Leistung kann durch Indexierung, Abfrageoptimierung und Tabellenpartitionierung verbessert werden. 5. Backup-, Wiederherstellungs- und Sicherheitsmaßnahmen unterstützen, um die Datensicherheit und -konsistenz zu gewährleisten.

Navicat selbst speichert das Datenbankkennwort nicht und kann das verschlüsselte Passwort nur abrufen. Lösung: 1. Überprüfen Sie den Passwort -Manager. 2. Überprüfen Sie Navicats "Messnot Password" -Funktion; 3.. Setzen Sie das Datenbankkennwort zurück; 4. Kontaktieren Sie den Datenbankadministrator.

Erstellen Sie eine Datenbank mit Navicat Premium: Stellen Sie eine Verbindung zum Datenbankserver her und geben Sie die Verbindungsparameter ein. Klicken Sie mit der rechten Maustaste auf den Server und wählen Sie Datenbank erstellen. Geben Sie den Namen der neuen Datenbank und den angegebenen Zeichensatz und die angegebene Kollektion ein. Stellen Sie eine Verbindung zur neuen Datenbank her und erstellen Sie die Tabelle im Objektbrowser. Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Daten einfügen, um die Daten einzufügen.

Durch das Kopieren einer Tabelle in MySQL müssen neue Tabellen erstellt, Daten eingefügt, Fremdschlüssel festgelegt, Indizes, Auslöser, gespeicherte Verfahren und Funktionen kopiert werden. Zu den spezifischen Schritten gehören: Erstellen einer neuen Tabelle mit derselben Struktur. Fügen Sie Daten aus der ursprünglichen Tabelle in eine neue Tabelle ein. Legen Sie die gleiche fremde Schlüsselbeschränkung fest (wenn die Originaltabelle eine hat). Erstellen Sie den gleichen Index. Erstellen Sie denselben Auslöser (wenn die ursprüngliche Tabelle eine hat). Erstellen Sie dieselbe gespeicherte Prozedur oder Funktion (wenn die ursprüngliche Tabelle verwendet wird).

Navicat für MariADB kann das Datenbankkennwort nicht direkt anzeigen, da das Passwort in verschlüsselter Form gespeichert ist. Um die Datenbanksicherheit zu gewährleisten, gibt es drei Möglichkeiten, Ihr Passwort zurückzusetzen: Setzen Sie Ihr Passwort über Navicat zurück und legen Sie ein komplexes Kennwort fest. Zeigen Sie die Konfigurationsdatei an (nicht empfohlen, ein hohes Risiko). Verwenden Sie Systembefehlsleitungs -Tools (nicht empfohlen, Sie müssen die Befehlszeilen -Tools beherrschen).

Sie können eine neue MySQL -Verbindung in Navicat erstellen, indem Sie den Schritten folgen: Öffnen Sie die Anwendung und wählen Sie eine neue Verbindung (Strg N). Wählen Sie "MySQL" als Verbindungstyp. Geben Sie die Hostname/IP -Adresse, den Port, den Benutzernamen und das Passwort ein. (Optional) Konfigurieren Sie erweiterte Optionen. Speichern Sie die Verbindung und geben Sie den Verbindungsnamen ein.

Häufige Gründe, warum Navicat keine Verbindung zur Datenbank und ihren Lösungen herstellen kann: 1. Überprüfen Sie den laufenden Status des Servers. 2. Überprüfen Sie die Verbindungsinformationen; 3. Passen Sie die Firewall -Einstellungen ein; 4. Konfigurieren Sie den Remote -Zugriff; 5. Fehlerbehebung mit Netzwerkproblemen; 6. Berechtigungen überprüfen; 7. Sicherheitskompatibilität sicherstellen; 8. Fehlerbehebung bei anderen Möglichkeiten.

Schritte zur Durchführung von SQL in Navicat: Verbindung zur Datenbank herstellen. Erstellen Sie ein SQL -Editorfenster. Schreiben Sie SQL -Abfragen oder Skripte. Klicken Sie auf die Schaltfläche Ausführen, um eine Abfrage oder ein Skript auszuführen. Zeigen Sie die Ergebnisse an (wenn die Abfrage ausgeführt wird).
