我想使特定顺序的JOIN的(A加入B)加入(C加入d)
SELECT *
FROM (lives_in as t1 NATURAL JOIN preferences p1) l1
JOIN (lives_in t2 NATURAL JOIN preferences p2) l2
ON l1.dormid = l2.dormid
返回一个错误。
任何人都可以帮忙吗?非常感谢!
我想使特定顺序的JOIN的(A加入B)加入(C加入d)
SELECT *
FROM (lives_in as t1 NATURAL JOIN preferences p1) l1
JOIN (lives_in t2 NATURAL JOIN preferences p2) l2
ON l1.dormid = l2.dormid
返回一个错误。
任何人都可以帮忙吗?非常感谢!
你的别名查询缺少SELECT
条款,所以试试这个:
SELECT *
FROM (
select * -- added this
FROM lives_in as t1
NATURAL JOIN preferences p1) l1
JOIN (
select * -- added this
FROM lives_in t2
NATURAL JOIN preferences p2) l2
ON l1.dormid = l2.dormid
感谢它的工作! – BersaKAIN
连接顺序对结果无关紧要。你可能想要这样的事情:
SELECT *
FROM lives_in t1
NATURAL JOIN preferences p1 ON p1.some_id = t1.id
NATURAL JOIN preferences p2 ON p2.some_id = t1.id
此外,大多数人称它为INNER JOIN,而不是NATURAL JOIN,顺便说一句。
顺便说一句,我不知道preference和lives_in表是如何相关的(我的假设是通过'some_id'共同的),但是你需要定义这种关系,否则JOIN是没有意义的。 –
自然连接是内部连接,但连接条件的隐含*是通过匹配所有相似名称的列来实现的。基本上是一个等待发生的bug。 – Bohemian
希望它会很有帮助。
SELECT *
FROM (
select * from lives_in as t1 NATURAL JOIN preferences p1
) l1
JOIN (
select * from lives_in t2 NATURAL JOIN preferences p2
) l2
ON l1.dormid = l2.dormid
什么是错误? –
请把你的表格创建表格语法。 –