关于另一个更复杂的问题,我正在做一些SQL数据库原型设计。我想做以下事情:
为了澄清,这里是两个原始数据库的样子(粗略地):
studentNames:
-------------
adam applewhite
betty boop
carl creepy . . .
这里是带有词汇单词的数据库:
actVocabWords:
--------------------
androgynous
ctenoid
stygian . . .
合并表(如果愿意)应如下所示:
studentName: actVocabWord: mastered:
----------------------------------------------------------------
adam applewhite androgynous T
adam applewhite ctenoid T
adam applewhite stygian F
betty boop androgynous T
betty boop ctenoid F
betty boop stygian F
carl creepy androgynous T
carl creepy ctenoid T
carl creepy stygian T
(对于在本网站上创建表格如此糟糕,我深表歉意)
我确定这是一种相当简单的方法来进行这种合并/加入,但我不知道该怎么称呼它(以便我可以搜索文档)。
据我所知,UNION,UNION ALL,OUTER JOIN,INNER JOIN,BATCH INSERT等从来没有真正意义上做过这种事情。我还建议不要尝试从词汇数据库中提取数据,将其加载到列表或数组(例如Java)中,手动处理合并,然后创建新数据库。
有谁知道我应该把这种奇怪的类型称为"合并"这样我就可以阅读SQL文档了吗?
谢谢!
答案 0 :(得分:1)
您无法解释如何获取最后一列mastered
。
您获得的行数为cross join
:
select studentName, actVocabWord
from StudentNames sn cross join actVocabWords vw;
这通常会与另一个表结合使用,比如mastered
来获取标记:
select sn.studentName, vw.actVocabWord,
(m.studentName is null) as mastered
from StudentNames sn cross join
actVocabWords vw left join
mastered m
on m.studentName = sn.studentName and m.actVocabWord = vw.actVocabWord