此外怎么办LEFT JOIN
,RIGHT JOIN
和FULL JOIN
适合吗?
什么之间的区别INNER JOIN
,LEFT JOIN
,RIGHT JOIN
并FULL JOIN
在MySQL的?
LEFT JOIN
和之间有什么区别LEFT OUTER JOIN
?
我想在MySQL中进行全外连接.这可能吗?MySQL是否支持Full Outer Join?
我列出了人员的姓名和名字,以及人员姓名和姓氏的清单.有些人没有名字,有些人没有姓氏; 我想在两个列表上进行完全外连接.
所以以下列表:
ID FirstName
-- ---------
1 John
2 Sue
ID LastName
-- --------
1 Doe
3 Smith
Run Code Online (Sandbox Code Playgroud)
应该产生:
ID FirstName LastName
-- --------- --------
1 John Doe
2 Sue
3 Smith
Run Code Online (Sandbox Code Playgroud)
我是LINQ的新手(如果我是跛脚的话,请原谅我)并找到了很多"LINQ Outer Joins"的解决方案,这些解决方案看起来非常相似,但实际上似乎是留下了外部联接.
到目前为止,我的尝试是这样的:
private void OuterJoinTest()
{
List<FirstName> firstNames = new List<FirstName>();
firstNames.Add(new FirstName { ID = 1, Name = "John" });
firstNames.Add(new FirstName { ID = 2, Name = "Sue" });
List<LastName> lastNames = new List<LastName>();
lastNames.Add(new LastName { ID = 1, Name = "Doe" …
Run Code Online (Sandbox Code Playgroud) 我正在检查一些旧的SQL语句,以便记录它们并可能增强它们.
DBMS是Oracle
我不明白这样的陈述:
select ...
from a,b
where a.id=b.id(+)
Run Code Online (Sandbox Code Playgroud)
我对(+)
操作员感到困惑,并且无法在任何论坛上得到它...(在引号内搜索+也不起作用).
无论如何,我使用了SQLDeveloper的"解释计划",我得到了一个输出说HASH JOIN, RIGHT OUTER
,等等.
如果我(+)
在查询结束时删除运算符会有什么不同吗?数据库是否必须满足某些条件((+)
如有一些索引等)才可以使用?如果你能给我一个简单的理解,或者我能读到的一些好的链接,那将会非常有帮助.
谢谢!
我有以下SQL,我试图将其转换为LINQ:
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17
WHERE p.companyid = 100
Run Code Online (Sandbox Code Playgroud)
我已经看到了左外连接的典型实现(即into x from y in x.DefaultIfEmpty()
等),但我不确定如何引入其他连接条件(AND f.otherid = 17
)
编辑
为什么AND f.otherid = 17
条件是JOIN的一部分而不是WHERE子句?因为f
某些行可能不存在,我仍然希望包含这些行.如果条件在WHERE子句中应用,在JOIN之后 - 那么我没有得到我想要的行为.
不幸的是:
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.DefaultIfEmpty()
where p.companyid == 100 && fgi.otherid == 17
select f.value
Run Code Online (Sandbox Code Playgroud)
似乎等同于:
SELECT …
Run Code Online (Sandbox Code Playgroud) 结果有什么不同:
你能通过一些例子解释一下吗?
鉴于下面的查询,dps_markers中可能有多行具有相同的标记键,但我们只想加入第一行.如果我接受此查询并删除顶部1和ORDER BY我得到一个mbg.marker_value的值但是按原样运行它总是返回null
SELECT u.id, mbg.marker_value
FROM dps_user u
LEFT JOIN
(SELECT TOP 1 m.marker_value, um.profile_id
FROM dps_usr_markers um (NOLOCK)
INNER JOIN dps_markers m (NOLOCK)
ON m.marker_id= um.marker_id AND
m.marker_key = 'moneyBackGuaranteeLength'
ORDER BY m.creation_date
) MBG ON MBG.profile_id=u.id
WHERE u.id = 'u162231993'
Run Code Online (Sandbox Code Playgroud) 有什么区别Left Join and Left Outer Join
?
outer-join ×10
join ×6
sql ×6
left-join ×3
mysql ×3
c# ×2
inner-join ×2
linq ×2
sql-server ×2
.net ×1
database ×1
linq-to-sql ×1
oracle ×1
right-join ×1
t-sql ×1