此外怎么办LEFT JOIN,RIGHT JOIN和FULL JOIN适合吗?
我想知道以下内容:
我打算在我的(例如 - PHP)应用程序中使用它,但不想对数据库运行多个查询,我有什么选项可以从单个查询中的多个表中获取数据?
注意:我正在写这篇文章,因为我希望能够链接到我在PHP队列中经常遇到的众多问题的精心编写的指南,因此我可以在发布答案时链接到此以获取更多详细信息.
答案涵盖以下内容:
CROSS JOIN和之间有什么区别INNER JOIN?
交叉加入:
SELECT
Movies.CustomerID, Movies.Movie, Customers.Age,
Customers.Gender, Customers.[Education Level],
Customers.[Internet Connection], Customers.[Marital Status],
FROM
Customers
CROSS JOIN
Movies
Run Code Online (Sandbox Code Playgroud)
内部联接:
SELECT
Movies.CustomerID, Movies.Movie, Customers.Age,
Customers.Gender, Customers.[Education Level],
Customers.[Internet Connection], Customers.[Marital Status]
FROM
Customers
INNER JOIN
Movies ON Customers.CustomerID = Movies.CustomerID
Run Code Online (Sandbox Code Playgroud)
哪一个更好,为什么我会使用其中一个?
有一段时间我只知道如何使用INNER JOIN,并且绝对不知道LEFT/RIGHT(OUTER)JOIN的作用.虽然,正如我刚刚读到的那样,我看不出右边的目的是什么?
在我看来它与反向LEFT JOIN相同
如果我们按照我的例子:
SELECT t1.* FROM table1 t1 RIGHT JOIN table2 t2 ON t2.value = t1.value
Run Code Online (Sandbox Code Playgroud)
与以下内容完全相同:
SELECT t2.* FROM table2 t2 LEFT JOIN table1 t1 ON t1.value = t2.value
Run Code Online (Sandbox Code Playgroud)
这是对的,还是我错过了什么?
几天前,我在接受采访时遇到了以下问题."什么是右外连接?" 我回答说,"右外连接连接两个表,并从表中返回匹配的记录以及表A中的非匹配行".面试官只是笑了,又问道:"为什么我们使用Right join而不是我们可以交换表并使用左连接?".然后我的回答是,"是的,我们可以使用".但是,他认为"那么为什么两个概念加入了?(左和右)".我真的对这个问题感到困惑.请帮助我,并纠正我对连接的理解.
我一直在尝试完全理解 sql 连接的概念,维恩图在这方面帮助了我很多。我发现它们适用于所有类型的连接,但不适用于自然连接。
自然连接的维恩图是什么样子的?
在这种情况下,左联接与右联接相同吗?
mysql>
mysql>
mysql> use usenet;show tables;describe ARTICLE;describe NEWSGROUP;
Database changed
+------------------+
| Tables_in_usenet |
+------------------+
| ARTICLE |
| NEWSGROUP |
+------------------+
2 rows in set (0.00 sec)
+---------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+----------------+
| ID | bigint(20) | NO | PRI | NULL | auto_increment |
| MESSAGENUMBER | int(11) | YES | | NULL | |
| NEWSGROUP_ID | bigint(20) | YES | MUL | NULL | | …Run Code Online (Sandbox Code Playgroud) sql ×6
join ×3
mysql ×3
database ×2
sql-server ×2
cross-join ×1
inner-join ×1
left-join ×1
natural-join ×1
one-to-many ×1
outer-join ×1
select ×1
t-sql ×1
venn-diagram ×1