我想在MySQL中进行全外连接.这可能吗?MySQL是否支持Full Outer Join?
我列出了人员的姓名和名字,以及人员姓名和姓氏的清单.有些人没有名字,有些人没有姓氏; 我想在两个列表上进行完全外连接.
所以以下列表:
ID  FirstName
--  ---------
 1  John
 2  Sue
ID  LastName
--  --------
 1  Doe
 3  Smith
应该产生:
ID  FirstName  LastName
--  ---------  --------
 1  John       Doe
 2  Sue
 3             Smith
我是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" …SQL Server中的CROSS JOIN和FULL OUTER JOIN有什么区别?
他们是一样的,不是吗?请解释.什么时候会使用其中任何一个?
SQLite只有INNER和LEFT JOIN.
有没有办法与SQLite进行完全外连接?
我继承了一个没有完全优化设计的数据库,我需要操作一些数据.让我对我必须做的事情做一个更常见的比喻:
假设我们有一张Student桌子,一张StudentClass桌子记录了他参加的所有课程,还有一张StudentTeacher桌子可以存储教授这名学生的所有老师.是的,我知道这是一个愚蠢的设计,将老师存放在Class表上更有意义 - 但这就是我们正在使用的.
我现在想要清理数据,我想找到一个学生有老师但没有上课但是上课但没有老师的所有地方.SQL因此:
select *
from StudentClass sc
full outer join StudentTeacher st on st.StudentID = sc.StudentID
where st.id is null or sc.id is null
你是怎么在Linq那样做的?
我有多个外连接
SELECT  A.column2
        , B.column2
        , C.column2
FROM 
(
    (SELECT month, column2 FROM table1) A
    FULL OUTER JOIN
    (SELECT month, column2 FROM table2) B on A.month= B.month
    FULL OUTER JOIN 
    (SELECT month, column2 FROM table3) C on A.month= C.month
)
现在最后一次加入有一个问题,它在A的月份超过B时重复,但是如果B有更多的月份A我们在C中有OUTER JOIN,而A现在重复,所以我想有一个完整的外部加入两个表可能会解决问题?任何深入的链接?
示例数据(不正确)
??????????????????????????????????????
?  Revenue   ? Budget  ? ActualMonth ?
??????????????????????????????????????
?     6.9172 ? 3.5046  ? Jan         ?
?     7.3273 ? 3.7383  ? Feb         ?
?     7.3273 ? 3.9719  ? Mar         ?
?     7.2726 ? 4.2056  ? Apr         ? …亲爱的每个人,
首先,我要感谢在这个页面回答问题的人们,感谢你们在这里所做的出色工作.我在编程方面不是很有经验,这个页面对我来说是一个巨大的帮助.
现在来谈谈我在MySQL中完全外部加入的具体问题.我有两个(或更多表):
table1 table2 id value id value2 1 a 1 b 2 c 3 d 3 e 4 f
我使用此查询来获取我的联接:
SELECT * 
FROM table1
LEFT OUTER JOIN table2
ON table1.`id`=table2.`id`
UNION
SELECT * 
FROM table1
RIGHT OUTER JOIN table2
ON table1.`id`=table2.`id`
要得到:
id value1 id value2 1 a 1 b 2 c NULL NULL 3 e 3 d NULL NULL 4 f
我的问题是我没有设法同时将两个id列折叠成一列来得到这个:
id value1 value2 1 a b 2 c NULL 3 e d 4 NULL f …
我在Postgres中有两个类似的表,只有一个32字节的拉丁字段(简单的md5哈希).两个表都有~30,000,000行.表没什么区别(10-1000行不同)
Postgres是否可以找到这些表之间的差异,结果应该是我上面描述的10-1000行.
这不是一个真正的任务,我只想知道PostgreSQL如何处理类似JOIN的逻辑.
这让我疯了.我有两个表,我试图进行连接,usersXstats和usersXstats_alltime.
两个表都具有相同的列:id,userId,statId和value
我想做的是
SELECT * 
FROM usersXstats 
FULL JOIN usersXstats_alltime 
ON usersXstats.userId=usersXstats_alltime.userId 
AND usersXstats.statId=usersXstats_alltime.statId
然而,这是回归
Unknown column 'usersXstats.userId' in 'on clause'
使用LEFT JOIN,RIGHT JOIN或INNER JOIN替换FULL JOIN时,此查询的工作方式与预期相同.
为了使它最初易于阅读,我编写了以下查询:
SELECT * 
FROM usersXstats as uxs 
FULL JOIN usersXstats_alltime as uxsat 
ON uxs.userId=uxsat.userId 
AND uxs.statId=uxsat.statId
哪个返回了不同的错误:
check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL JOIN usersXstats_alltime as uxsat ON uxs.userId=uxsat.userId AND uxs.statId' at line 1
我究竟做错了什么?提前致谢!
我有以下select语句,我需要从表tbTasks中对每个任务求和,并通过表tbProjects中的projectId对它们进行分组,以获得如下记录:
ProjectID = 1, ProjectName = 'My Project', TotalTime = 300 //<--sum of each task time
查询如下所示:
SELECT tbTasks.projectId, 
       SUM(tbTasks.taskTime) AS totalTime, 
       tbProjects.projectName 
FROM tbTasks 
    INNER JOIN tbProjects ON tbTasks.projectId = tbProjects.projectId 
GROUP BY tbTasks.projectId 
ORDER BY tbProjects.created DESC
这工作并执行正常,但有一个问题,如果一个项目没有与之关联的任务,那么我根本没有得到任何记录(我想获得projectId,projectName和0或NULL的totalTime).所以,为了正确加入表格,tbProjects SQLite3迫使我以圆形方式进行.
SELECT tbTasks.projectId, 
       SUM(tbTasks.taskTime) AS totalTime, 
       tbProjects.projectName 
FROM tbTasks LEFT OUTER JOIN tbProjects
       ON tbTasks.projectId = tbProjects.projectId 
GROUP BY tbTasks.projectId 
UNION 
SELECT tbProjects.projectId, 
       SUM(tbTasks.taskTime) AS totalTime, 
       tbProjects.projectName   
FROM tbProjects LEFT OUTER JOIN tbTasks 
      ON tbProjects.projectId = tbTasks.projectId 
GROUP BY tbTasks.projectId …full-outer-join ×10
sql ×6
join ×3
mysql ×3
outer-join ×3
c# ×2
linq ×2
sql-server ×2
sqlite ×2
union ×2
.net ×1
cross-join ×1
exists ×1
group-by ×1
left-join ×1
linq-to-sql ×1
postgresql ×1
t-sql ×1