【发布时间】:2013-11-24 03:58:31
【问题描述】:
表APP
表Purchase_Order
我想删除 app 和 purchase_order 表中的所有计数器 100001。我该怎么做?
这是我的代码
app.php
<a href="app.php?de='.$row["counter"].'">
if(isset($_GET['de']))
{
$del_id=$_GET['de'];
sql= ...
}
【问题讨论】:
表APP
表Purchase_Order
我想删除 app 和 purchase_order 表中的所有计数器 100001。我该怎么做?
这是我的代码
app.php
<a href="app.php?de='.$row["counter"].'">
if(isset($_GET['de']))
{
$del_id=$_GET['de'];
sql= ...
}
【问题讨论】:
一般方法查询如下所示
DELETE a, p
FROM
(
SELECT 100001 counter
) q LEFT JOIN app a
ON q.counter = a.counter LEFT JOIN purchase_order p
ON q.counter = p.counter;
即使其中一个表中没有counter = 100001 的行,它也会删除两个表中的行
这里是SQLFiddle演示
【讨论】:
FULL JOIN,因此为了确保最左边的表(因为我们使用LEFT JOIN)有一个具有所需值的行,我们只需将一个简单的选择包装到子查询中即时创建它。然后将两个实际的表留给它。
试试下面的查询
DELETE a.*,b.* FROM app as a
LEFT JOIN purchase_order as b
ON a.counter=b.counter
WHERE a.counter=100001
【讨论】:
试试这个:
sql= "DELETE FROM a.*, b.* from app a LEFT JOIN purchase_order b
on a.counter=b.counter where a.counter=".$del_id;
【讨论】:
尝试以下方法:
DELETE a.*, p.*
FROM app a
LEFT JOIN purchase_order p
ON p.counter = a.counter
WHERE a.counter = 100001
【讨论】:
app 不包含任何带有 counter = 100001 的行,它将无法工作
app 没有条目,我认为不会有任何purchase_orders 的日志。