2012-11-07 63 views
1

我在使用SQL数据库在PHP中创建一个小型消息传递应用程序,但遇到了一个小问题。我会尝试尽可能地使这里去解释这个...如果在“表”中满足条件,则从“表1”中删除2 SQL

我有一个表称为“用户”如下:

ID | Username | Password | Email 
------------------------------------------- 
1 | Account1 | Pass 1 | [email protected] 
2 | Account2 | Pass 2 | [email protected] 

我再有另一个名为“朋友”如下:

UserID | FriendID 
------------------ 
    1 |  2  

所以我需要的是一个查询,如果第二个表中满足条件,将从“Friends”表中删除一行。

例子:

DELETE FROM 'friends' WHERE UserID = 1 AND (users.Password = $Password WHERE users.ID = 1) 

我希望这是一个足够好的解释,但我发现这很难解释。

+0

这是MySQL还是其他DBMS? –

+0

你能用英文(而不是代码)描述你想要做什么吗?像“我试图让所有的用户的朋友,但只有当该用户提供了正确的密码”? – corsiKa

+0

@ypercube这是MySQL :) –

回答

1
DELETE FROM 'friends' 
WHERE UserID IN (
    SELECT UserID 
    FROM users 
    WHERE Password=$Password 
    AND UserID=1 
) 

应该工作。您不需要将UserId字段列出两次,这将是多余的。

+0

这段代码能工作吗? 函数DeleteFriend($ UserID,$ FriendID,$ Password){ $ Query =“DELETE FROM'rabbit_friends'WHERE UserID IN(SELECT ID FROM rabbit_users WHERE ID =?AND Password =?)AND FriendID =?”; if($ Statement = $ this-> Connection-> prepare($ Query)){Statement-> bind_param('isi',$ UserID,$ Password,$ FriendID); if($ Statement-> execute()){ $ Statement-> close(); 返回true; } } }' –

+0

@ user1807226 - 只要'rabbit_friends.UserID'与'rabbit_users.ID'相同,这似乎是有效的 –

相关问题