【问题标题】:Deleting from "Table1" if a condition is met in "Table" 2 SQL如果“表”2 SQL中满足条件,则从“表1”中删除
【发布时间】:2012-10-27 22:50:55
【问题描述】:

我正在使用 SQL 数据库在 PHP 中制作一个小型消息传递应用程序,但遇到了一个小问题。我会尽可能地解释这个,所以这里......

我有一个名为“用户”的表,如下所示:

ID | Username | Password | Email 
-------------------------------------------
1  | Account1 | Pass 1   | email1@mail.com
2  | Account2 | Pass 2   | email2@mail.com

然后我有另一个叫做“朋友”如下:

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

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

例子:

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

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

【问题讨论】:

  • 这是 MySQL 还是其他 DBMS?
  • 你能用英语(而不是代码)描述你想要做什么吗?比如“我正在尝试获取某个用户的所有朋友,但前提是该用户提供了正确的密码”?
  • @corsiKa 对不起,如果你不明白.. 如果用户提供了正确的密码,我正在尝试进行一个 SQL 查询,该查询将从朋友表中删除一行。

标签: php mysql sql conditional-statements sql-delete


【解决方案1】:
DELETE FROM 'friends' 
WHERE UserID IN (
    SELECT UserID 
    FROM users 
    WHERE Password=$Password 
    AND UserID=1
)

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

【讨论】:

  • 这段代码行得通吗? function 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(); return true; } } }
  • @user1807226 - 这似乎是有效的,只要rabbit_friends.UserIDrabbit_users.ID 相同
猜你喜欢
  • 2012-10-27
  • 1970-01-01
  • 2015-10-13
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
相关资源
最近更新 更多