此外怎么办LEFT JOIN
,RIGHT JOIN
和FULL JOIN
适合吗?
什么之间的区别INNER JOIN
,LEFT JOIN
,RIGHT JOIN
并FULL JOIN
在MySQL的?
给出两个数据框:
df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
df1
# CustomerId Product
# 1 Toaster
# 2 Toaster
# 3 Toaster
# 4 Radio
# 5 Radio
# 6 Radio
df2
# CustomerId State
# 2 Alabama
# 4 Alabama
# 6 Ohio
Run Code Online (Sandbox Code Playgroud)
我怎样才能做数据库风格,即sql风格,加入?也就是说,我该怎么做:
这两个连接都会给我相同的结果:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
Run Code Online (Sandbox Code Playgroud)
VS
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Run Code Online (Sandbox Code Playgroud)
表现或其他方面的陈述是否有任何区别?
不同的SQL实现之间是否有所不同?
为简单起见,假设所有相关字段都是NOT NULL
.
你可以做:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)
Run Code Online (Sandbox Code Playgroud)
要不然:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)
Run Code Online (Sandbox Code Playgroud)
这两个是以同样的方式工作MySQL
吗?
我有一个带account numbers
和的数据库card numbers
.我将这些文件与update
任何卡号匹配到帐号,以便我只使用帐号.
我创建了一个视图链接表和帐户/卡数据库以返回Table ID
相关的帐号,现在我需要更新ID与帐号匹配的记录.
这是Sales_Import
表,account number
需要更新字段:
LeadID AccountNumber
147 5807811235
150 5807811326
185 7006100100007267039
Run Code Online (Sandbox Code Playgroud)
这是RetrieveAccountNumber
表,我需要更新:
LeadID AccountNumber
147 7006100100007266957
150 7006100100007267039
Run Code Online (Sandbox Code Playgroud)
我试过以下,但到目前为止没有运气:
UPDATE [Sales_Lead].[dbo].[Sales_Import]
SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber
FROM RetrieveAccountNumber
WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID =
RetrieveAccountNumber.LeadID)
Run Code Online (Sandbox Code Playgroud)
它将卡号更新为帐号,但帐号被替换为 NULL
我想更新表中的列,在其他表上进行连接,例如:
UPDATE table1 a
INNER JOIN table2 b ON a.commonfield = b.[common field]
SET a.CalculatedColumn= b.[Calculated Column]
WHERE
b.[common field]= a.commonfield
AND a.BatchNO = '110'
Run Code Online (Sandbox Code Playgroud)
但它抱怨:
消息170,级别15,状态1,行2
第2行:'a'附近的语法不正确.
这有什么不对?
我是一个老派的MySQL用户,并且总是优先JOIN
于子查询.但是现在每个人都使用子查询,我讨厌它; 我不知道为什么.
如果存在任何差异,我缺乏理论知识来判断自己.子查询是否与a一样好JOIN
,因此没有什么可担心的?
阅读之后,这不是Explicit vs Implicit SQL Joins的重复.答案可能是相关的(甚至是相同的),但问题是不同的.
有什么区别,应该分别做些什么?
如果我理解正确的理论,查询优化器应该能够互换使用.
我想在MySQL中进行全外连接.这可能吗?MySQL是否支持Full Outer Join?
join ×10
sql ×8
inner-join ×4
mysql ×4
outer-join ×3
sql-server ×3
sql-update ×2
database ×1
dataframe ×1
merge ×1
on-clause ×1
r ×1
r-faq ×1
select ×1
subquery ×1
t-sql ×1
where-clause ×1