MySQL中基本的3表内连接?

时间:2011-09-02 18:34:05

标签: mysql

我尝试在SO上寻找这样的问题但是其中很多都是带有更复杂的select子句的外连接,而我的问题更简单,应该是MySQL新手的更快的参考。

习惯了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';

我在PHPMyadmin的SQL部分运行了它,它告诉我loginid是模棱两可的,我认为这很有趣,因为如果我加入这三个表,为什么它会模棱两可?所以我编辑了它并成功了

tbl_login.loginid = 'derek' 

从tbl_login表中删除了正确的行,但最终删除了其他表中的所有行。我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

tbl_profile条款中删除imagesFROM

答案 1 :(得分: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中删除,之前的答案会告诉您如何执行此操作:)