我尝试在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表中删除了正确的行,但最终删除了其他表中的所有行。我在这里做错了什么?
答案 0 :(得分:3)
从tbl_profile
条款中删除images
和FROM
。
答案 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中删除,之前的答案会告诉您如何执行此操作:)