我有一个PHP服务器脚本,它从MySQL数据库中选择一些数据.
只要我有mysql_query中保存在我自己的局部变量mysql_fetch_assoc的结果,我想删除我只是选择的行.
这种方法的问题在于,似乎PHP已经对我的局部变量进行了传递而不是传值,并且我的局部变量在delete命令之后变得不确定.
反正有没有绕过这个?这是我的代码:
$query="SELECT id, peerID, name FROM names WHERE peer = $userID AND docID = '$docID' AND seqNo = $nid";
$result = mysql_query($query);
if (!$result)
self::logError("FAIL:1 getUsersNamesUpdate() query: ".$query."\n");
if (mysql_num_rows($result) == 0)
return array();
$row = mysql_fetch_assoc($result);
$result = array();
$result["id"] = $row["id"];
$result["peerID"] = $row["peerID"];
$result["name"] = $row["name"];
$query="DELETE FROM names WHERE id = $result[id];";
$result = mysql_query($query);
if (!$result)
self::logError("FAIL:2 getUsersNamesUpdate() query: ".$query."\n");
return $result;
Run Code Online (Sandbox Code Playgroud) 我希望根据ID在1个查询中删除两个不同表中的信息.
我已经在这里尝试了几种解决方案来完成这项任务,但仍然没有完成我正在尝试做的事情.
表1 - 内容
---------- ---------
ContentID | Content
--------------------
Run Code Online (Sandbox Code Playgroud)
表2 - 投票
---------------------------
VoteID | ContentID | Vote
---------------------------
Run Code Online (Sandbox Code Playgroud)
我想根据其ID和任何或所有投票删除内容行(可能有0个投票记录).我不希望使用交易,级联删除,或使用2次不同的查询.
什么是最好的 - LEFT JOIN?内部联接?
这里的任何帮助将不胜感激.
我需要做的是: - 从表中删除一个条目formfields
- 使用排序更新每个字段>(删除字段的排序) - 将更新字段的顺序设置为当前值减1(例如,如果字段上的当前排序是8,那么它应该设置为7).
这可能在一个查询中?或者我该如何实现?
当我执行此查询时:
DELETE FROM `wp_posts` WHERE id NOT IN
(SELECT id FROM wp_posts WHERE post_status = 'publish')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
您不能在FROM子句中为更新指定目标表'wp_posts'
不确定这里的语法问题.
我有以下sql让我所有的根forumpost的子孙.
with recursive all_posts (id, parentid, root_id) as
(
select t1.id,
t1.parent_forum_post_id as parentid,
t1.id as root_id
from forumposts t1
union all
select c1.id,
c1.parent_forum_post_id as parentid,
p.root_id
from forumposts
c1
join all_posts p on p.id = c1.parent_forum_post_id
)
select fp.id
from forumposts fp inner join all_posts ap
on fp.id=ap.id
where
root_id=1349
group by fp.id
Run Code Online (Sandbox Code Playgroud)
我想要删除选中的记录.像从forumposts fp中删除的东西,其中fp.id =(最后从上面的代码中选择),但这不起作用(我在"DELETE"或附近得到语法错误).这是我第一次使用递归,我必须遗漏一些东西.任何帮助表示赞赏.
假设我有一个包含200k +行的表的数据库.
这个表有一个id为1800的固定元组.其余的元组序列从300k +开始.
我需要清理这个表,删除所有记录而不删除id为1800的一个寄存器.我想出了可能运行的3种类型的查询:
DELETE FROM table WHERE id > 1800
DELETE FROM table WHERE id <> 1800
DELETE FROM table WHERE id NOT IN (1800)
Run Code Online (Sandbox Code Playgroud)
我觉得第一个比其他人更快,但我不确定,因为所有其他数据的ID都大于1800.
哪一个更快,为什么?此外,如果有更快的方法删除不能删除的记录,请告诉我.
我想删除下表中的多个重复键:
id | name | uid
1 | ekta | 5
2 | ekta | 5
3 | sharma | 10
4 | sharma | 10
Run Code Online (Sandbox Code Playgroud)
希望它像
id | name | uid
1 | ekta | 5
3 | sharma | 10
Run Code Online (Sandbox Code Playgroud)
我正在使用mysql.可能吗?我无法使用 unique constraint查询来创建唯一的输入,因为我希望将这些重复的条目输入到表中.
如何在一个查询(带有左联接)中从多个表中删除行。查询:
DELETE `deadline`, `job` FROM `deadline` LEFT JOIN `job` ....
Run Code Online (Sandbox Code Playgroud)
所以,我这样尝试:
DB::table('deadline', 'job')
->leftJoin('job', 'deadline.id', '=', 'job.deadline_id')
->where('deadline.id', $id)
->delete();
Run Code Online (Sandbox Code Playgroud)
似乎Laravel不支持从具有左联接的多个表中删除。
有受支持的方法或解决方法吗?
我想在删除之前检查一行是否存在.我的表中的行不存在但总是返回1:
$orders = $this->db->prepare("SELECT * FROM orders WHERE id=? AND user=?");
$check = $orders->execute(array($message,$this->model->checkapi($data,$message)));
echo $check;
if($check){
$deleteorder = $this->db->prepare("DELETE FROM orders WHERE id=? AND user=?");
$deleteorder->execute(array($message,$this->model->checkapi($data,$message)));
array_push($result, array('success' => true,
'deleted' => $message));
echo json_encode(array("result" => $result));
die();
}else{
Run Code Online (Sandbox Code Playgroud)
$this->model->checkapi($data,$message)
返回fakeusername和id/$ message返回136
我检查了我的数据库,ID存在,但不是id和用户名.
我发送id:136和用户名:fakeuser
在数据库中,该行以id:136和username:demo存在.
我不确定为什么它因为不匹配而不应该选择行时返回1.

我创建了一个查询来删除表中的重复行.我试图这样做,但输出是"太多的价值"
DELETE FROM Employeetest
WHERE employeeid IN (SELECT
employeetest.*,
ROW_NUMBER() OVER (PARTITION BY employeeid ORDER BY employeeid) AS rownumber
FROM
employeetest
HAVING
(rownumber > 1));
Run Code Online (Sandbox Code Playgroud)
我也做了
SELECT
employeetest.*,
ROW_NUMBER() OVER (PARTITION BY employeeid ORDER BY employeeid) AS rownumber
FROM
employeetest
Run Code Online (Sandbox Code Playgroud)
然后
DELETE * FROM employeetest;
Run Code Online (Sandbox Code Playgroud)
它不起作用
sql-delete ×10
mysql ×6
php ×4
sql ×4
postgresql ×2
select ×2
laravel-4 ×1
left-join ×1
optimization ×1
oracle ×1
pdo ×1
syntax ×1