什么之间的区别INNER JOIN,LEFT JOIN,RIGHT JOIN并FULL JOIN
在MySQL的?
LEFT JOIN和之间有什么区别LEFT OUTER JOIN?
我有这个文件表(这里是简化版):
+------+-------+--------------------------------------+
| id | rev | content |
+------+-------+--------------------------------------+
| 1 | 1 | ... |
| 2 | 1 | ... |
| 1 | 2 | ... |
| 1 | 3 | ... |
+------+-------+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)
如何为每个id选择一行并且只选择最大转速?
使用上面的数据,结果应该包含两行:[1, 3, ...]和[2, 1, ..].我正在使用MySQL.
目前,我在while循环中使用检查来检测并覆盖结果集中的旧转速.但这是实现结果的唯一方法吗?是不是有SQL解决方案?
更新
作为答案提示,有是一个SQL的解决方案,并且这里sqlfiddle演示.
更新2
我注意到在添加上述sqlfiddle之后,问题被投票的速率超过了答案的upvote率.那不是故意的!小提琴是基于答案,特别是接受的答案.
mysql sql aggregate-functions greatest-n-per-group groupwise-maximum
我想在MySQL中进行全外连接.这可能吗?MySQL是否支持Full Outer Join?
我知道SQL Server中的连接.
例如.Table1,Table2有两个表.
他们的桌子结构如下.
create table Table1 (id int, Name varchar (10))
create table Table2 (id int, Name varchar (10))
Run Code Online (Sandbox Code Playgroud)
表1数据如下:
Id Name
-------------
1 A
2 B
Run Code Online (Sandbox Code Playgroud)
表2数据如下:
Id Name
-------------
1 A
2 B
3 C
Run Code Online (Sandbox Code Playgroud)
如果我执行下面提到的两个SQL语句,则两个输出都是相同的
select *
from Table1
left join Table2 on Table1.id = Table2.id
select *
from Table2
right join Table1 on Table1.id = Table2.id
Run Code Online (Sandbox Code Playgroud)
请解释上述SQL语句中左右连接的区别.
无视性能,我会从下面的查询A和B得到相同的结果吗?C和D怎么样?
-- A
select *
from a left join b
on <blahblah>
left join c
on <blahblan>
-- B
select *
from a left join c
on <blahblah>
left join b
on <blahblan>
-- C
select *
from a join b
on <blahblah>
join c
on <blahblan>
-- D
select *
from a join c
on <blahblah>
join b
on <blahblan>
Run Code Online (Sandbox Code Playgroud) 我想快速细分一下MySQL连接的类型.我知道这些,其余的我不确定他们的意思.
SELECT * FROM a, b WHERE b.id = a.beeId AND ...SELECT * FROM a LEFT OUTER JOIN b ON b.id = a.beeId WHERE ...我已经看过其他联接,但想知道是什么让它们与众不同,什么是INNER/ OUTER,添加LEFT改变的东西.
我已经知道联接是如何工作的,我只是想知道是否存在其他类型的连接,或者它们是否只是获得相同结果的不同方式.
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)
哪一个更好,为什么我会使用其中一个?
sql ×8
join ×7
mysql ×4
outer-join ×3
sql-server ×3
database ×2
left-join ×2
t-sql ×2
cross-join ×1
inner-join ×1
right-join ×1
union ×1