【问题标题】:How can i delete table using alises on sql query? [closed]如何在 sql 查询中使用别名删除表? [关闭]
【发布时间】:2020-06-25 23:32:33
【问题描述】:

我明白了

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取正确的语法,以便在我尝试删除数据时在第 1 行 ** 的 'as idab, b.id_skb as idab FROM skd a, skb b WHERE idab='5'' 附近使用从 id 到 2 个表... 在这里,

<?php 

include './../../koneksi.php';
 

$idab= $_GET['idab'];

if (mysqli_query($koneksi, "DELETE a.id_skd as idab, b.id_skb as idab FROM skd a, skb b WHERE idab='$idab' "));{


    echo ('<script> 
        alert("Data Anda Berhasil Dihapus...!!!");
        window.location="http://localhost/administrasi_kelurahan/pengguna/administrator/Riwayat_Notif.php";
        </script>');


}

?>

 

【问题讨论】:

  • 您查询的目的是什么?您真的要一次从两个表中删除记录吗?
  • 不能删除列,只能删除行。
  • 是的先生,所以我想按每个 ID 一次从 2 个表中删除记录...
  • 表之间有关系吗?您在WHERE 子句中只指定了一列,该列在哪个表中?
  • 先生,无论如何我想按每个id删除这条记录,你能给我解决方案或一些例子吗?

标签: php mysql sql mysqli


【解决方案1】:

执行两个DELETE 查询,而不是一个。使用事务使其原子化。

$stmt1 = mysqli_prepare($koneski, "DELETE FROM skd WHERE idab = ?");
mysqli_stmt_bind_param($stmt1, "s", $idab);
$stmt2 = mysqli_prepare($koneski, "DELETE FROM skb WHERE idab = ?");
mysqli_stmt_bind_param($stmt2, "s", $idab);
mysqli_query("START TRANSACTION");
mysqli_stmt_execute($stmt1);
mysqli_stmt_execute($stmt2);
mysqli_query("COMMIT");

我还展示了如何使用准备好的语句来防止 SQL 注入。

您不能在单个查询中执行此操作,除非表之间存在关系,例如外键。在这种情况下,您可能会在从父表中删除时使用ON DELETE CASCADE 自动从子表中删除。

如果数据相关,可以使用JOIN

DELETE a, b
FROM skb AS a
JOIN skb_pengikut AS b ON a.id = b.id_skb
WHERE a.id = ?

但是,如果您使用 ON DELETE CASCADE 选项将 id_skb 声明为外键,那么您只需要这样做:

DELETE FROM skb
WHERE id = ?

它会自动从id_pengikut中删除。

【讨论】:

  • 好的先生,我会的......
  • 先生,您击中了这些... omg 非常感谢您!!!!!!
  • 您好,先生,我可以问一点吗?
  • skb 表有关系 和名为skb_pengikut 的表有关系,则skb_pengikut 表有fk 也就是id_skb,我想问的是是否对查询删除2个相关表的添加正确? 比如我想删除skb中的数据表,我还希望skb_pengikut上的数据fk也被删除
  • 非常感谢先生,你太棒了!!!
【解决方案2】:

当尝试从两个表中删除时,您应该使用事务将两个单独的删除操作与干净的回滚可能性结合起来。否则,您可能会在一个表中删除记录而在另一个表中未删除。 如果两个表通过引用完整性链接,则先在引用表中删除,然后在被引用表中删除。

【讨论】:

  • 我只是喜欢这些,因为我选择它并且它有效,所以我只想知道它在删除中是否有效......
猜你喜欢
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多