2011-09-02 70 views
0

我试图寻找一个这样的问题,但它们中的很多是外部联接更复杂的选择子句,而我的问题更简单,应该是MySQL的新手更快的参考。MySQL中的基本3表内连接?

使用到Oracle SQL,我想加入三个表并执行删除,像这样:

DELETE * FROM tbl_login, tbl_profile, images 
WHERE tbl_login.loginid = tbl_profile.loginid 
AND tbl_profile.loginid = images.loginid 
AND loginid = 'derek'; 

在MySQL中我的尝试是:

DELETE FROM tbl_profile, images, tbl_login 
USING tbl_profile INNER JOIN images INNER JOIN tbl_login 
WHERE tbl_profile.loginid = images.loginid 
AND images.loginid = tbl_login.loginid 
AND loginid='derek'; 

我在SQL运行此PHPMyadmin的一节,它告诉我,loginid是模棱两可的,我认为这很有趣,因为如果我加入三张表,为什么它会模糊?所以,我编辑它,并使它

tbl_login.loginid = 'derek' 

从tbl_login表中删除相应的行,但它结束了从我的其他表中删除所有行。我在这里做错了什么?

回答

1

我觉得你的查询应该是这个样子(注意不同的方式加盟条件定义):

DELETE FROM tbl_profile, images, tbl_login 
USING tbl_profile INNER JOIN images ON images.loginid = tbl_profile.loginid 
INNER JOIN tbl_login ON tbl_login.loginid = tbl_profile.loginid 
WHERE tbl_login.loginid='derek'; 

我假设你想从所有3个表删除行。如果你只想从tbl_login中删除,以前的回答告诉你如何去做:)

+0

没错。我想删除所有3个表中的行,或者在加入3个表后删除1行(我喜欢这样想)。这工作。谢谢! – winnicki

3

从您的FROM条款中删除tbl_profileimages