标签: sql-delete

SQL Server在一段时间后自动删除一条记录?

我有一个表,它有两个属性:创建该记录的 ID 和日期时间。

我怎样才能触发(程序?)在一天后删除记录?

我想要一个每 X 次执行一次的任务,而不必手动执行。

sql sql-server sql-delete

5
推荐指数
1
解决办法
1万
查看次数

如何从 Postgres 中的 CTE(公用表表达式)中删除记录

我在 Postgres 中使用 CTE 编写了以下查询。现在我无法从中删除记录。

WITH cte AS (
    SELECT 
   
        firstname, 
        lastname, 
        country, 
        ROW_NUMBER() OVER (
            PARTITION BY 
                firstname, 
                lastname, 
                country
        ) row_num
     FROM 
        employee
) 
delete  from cte
where row_num >1
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,它显示错误:

关系“cte”不存在

这是我的表“员工”的示例

id  firstname  lastname  country
1   "Raj"      "Gupta"   "India"
2   "Raj"      "Gupta"   "India"
3   "Mohan"    "Kumar"   "USA"
4   "James"    "Barry"   "UK"
5   "James"    "Barry"   "UK"
6   "James"    "Barry"   "UK"
Run Code Online (Sandbox Code Playgroud)

sql postgresql common-table-expression sql-delete

5
推荐指数
2
解决办法
1万
查看次数

如何将此MySQL SELECT查询转换为DELETE查询?

我想从数据库中删除某些项目.我有以下查询:

SELECT * 
FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13
Run Code Online (Sandbox Code Playgroud)

这有效,并返回2个结果.

现在我想将此SELECT查询转换为DELETE查询.但是,以下不起作用:

DELETE FROM sheets, entries 
WHERE entries.sheetID = sheets.id AND sheets.clientID = 13
Run Code Online (Sandbox Code Playgroud)

MySQL抛出以下错误:

1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在第1行的"WHERE entries.sheetID = sheets.id AND sheets.clientID = 13"附近使用正确的语法

我在这做错了什么?

mysql sql select sql-delete

4
推荐指数
1
解决办法
6505
查看次数

MySQL试图删除所有不受外键约束的行

好吧,这可能是一个非常简单的问题,但我恐怕几乎不知道MySQL,所以请忍受我.我只是试图从一个表中删除不受另一个表中的外键约束的每一行 - 一个特定的表,这里只涉及两个表.create语句看起来有点像:

CREATE TABLE  `testschema`.`job` (
  `Job_Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `Comment` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`Job_Id`) USING BTREE,
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE  `ermieimporttest`.`jobassignment` (
  `JobAssignment_Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `JobId` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`JobAssignment_Id`),
  KEY `FK_jobassignment_1` (`JobId`),
  CONSTRAINT `FK_jobassignment_1` FOREIGN KEY (`JobId`) REFERENCES `job` (`Job_Id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

我的任何SQL语句都是:

DELETE FROM job USING job INNER JOIN jobAssignment WHERE job.Job_Id != jobAssignment.JobId;
Run Code Online (Sandbox Code Playgroud)

我认为这是正确的 - 它应该删除作业表中的每个作业,而作业作业中没有作业,因为它是外键.但是,当我尝试执行它时失败并出现以下错误:

无法删除或更新父行:外键约束失败( …

mysql foreign-keys sql-delete

4
推荐指数
2
解决办法
2499
查看次数

MySQL绕过错误1093

错误1093表示如果子查询查询要删除的表,则无法使用子查询更新或删除.

所以你做不到

delete from table1 where id in (select something from table1 where condition) ;
Run Code Online (Sandbox Code Playgroud)

好吧,解决这个限制的最佳方法是什么(假设您确实需要子查询来执行删除,并且不能完全消除自引用子查询?)

编辑:

以下是对有兴趣的人的查询:

mysql> desc adjacencies ;
+---------+---------+------+-----+---------+-------+
| Field   | Type    | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| parent  | int(11) | NO   | PRI | NULL    |       |
| child   | int(11) | NO   | PRI | NULL    |       |
| pathLen | int(11) | NO   |     | NULL    |       |
+---------+---------+------+-----+---------+-------+



-- The query is going to
-- …

mysql sql mysql-error-1093 sql-update sql-delete

4
推荐指数
1
解决办法
8999
查看次数

这个PHP/MySQL删除功能是否安全?

我有一个设置,我从表中删除条目.

它基于URL的查询字符串,我认为这可能是一个不好的开始方式.

因此,如果URL是:

http://www.example.com/delete.php?id=123&ref=abc

而delete.php中的php如下:

$id=$_GET['id'];
$ref=$_GET['ref'];

$con = mysql_connect("blahblah","user","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

mysql_query("DELETE FROM mytable WHERE id=" . $id . " AND ref='" . $ref . "'");

mysql_close($con);
Run Code Online (Sandbox Code Playgroud)

有没有办法让这更安全......或者这确实在任何方面都是安全的吗?

编辑:

好的,基于反馈,我采取了一种新的方法.

list.php包含表中每个条目的一组radiobuttons - 如下所示:

$con = mysql_connect("localhost","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("db", $con);

$result = mysql_query("SELECT * FROM myTable");

echo "<form name='wer' id='wer' action='delete.php' method='post' >";

echo "<table border='1'>";

while($row = mysql_fetch_array($result))
  {
  echo …
Run Code Online (Sandbox Code Playgroud)

php mysql security sql-delete

4
推荐指数
2
解决办法
3229
查看次数

Access中有多个LEFT JOIN

我有以下查询,适用于MySQL:

DELETE `test1`, `test2`, `test3`, `test4` FROM
`test1` LEFT JOIN `test2` ON test2.qid = test1.id
LEFT JOIN test3 ON test3.tid = test2.id
LEFT JOIN test4.qid = test1.id
WHERE test1.id = {0}
Run Code Online (Sandbox Code Playgroud)

但它不适用于MS Access.我试图在LEFT JOIN它周围添加括号,但它在FROM子句中给出了语法错误.那么这个查询应该怎样才能在MS Access中工作?

sql ms-access jet sql-delete

4
推荐指数
1
解决办法
3万
查看次数

Firebird截断表/删除所有行

我正在使用Firebird 2.5.1 Embedded。我已经按照通常的方法清空了近200k行的表:

delete from SZAFKI
Run Code Online (Sandbox Code Playgroud)

这是输出,需要16秒,这是不可接受的。

Preparing query: delete from SZAFKI
Prepare time: 0.010s
PLAN (SZAFKI NATURAL)

Executing...
Done.
3973416 fetches, 1030917 marks, 116515 reads, 116434 writes.
0 inserts, 0 updates, 182658 deletes, 27 index, 182658 seq.
Delta memory: -19688 bytes.
SZAFKI: 182658 deletes. 
182658 rows affected directly.
Total execution time: 16.729s
Script execution finished.
Run Code Online (Sandbox Code Playgroud)

Firebird没有TRUNCATE关键字。当查询使用PLAN NATURAL时,我尝试手动进行查询计划,如下所示:

delete from szafki PLAN (SZAFKI INDEX (SZAFKI_PK))
Run Code Online (Sandbox Code Playgroud)

但是Firebird说“ SZAFKI_PK无法在指定计划中使用”(这是主键)问题是如何有效清空表?无法删除和重新创建。

sql firebird truncate sql-delete

4
推荐指数
1
解决办法
2万
查看次数

ON CASCADE DELETE对JPA2的多对多关系

我已经阅读了很多关于级联和多对多关联的主题,但我无法找到我的特定问题的答案.

我在UserProfiles和Roles之间有多对多的关系.当我删除UserProfile时,我希望数据库删除连接表(userprofile2role)中的关联记录,因此使用实际的SQL"ON DELETE CASCADE"操作.这可能吗?无论我尝试什么,Hibernate总是创建UserProfile表而不指定ON DELETE行为.

UserProfile映射:

@Entity
public class UserProfile {

    private Long id;
    private Set<Role> roles;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public final Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    // Note: CascadeType.ALL doesn't work for many-to-many relationships
    @ManyToMany (fetch = FetchType.EAGER)
    public Set<Role> getRoles() {
        return roles;
    }

    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }
}
Run Code Online (Sandbox Code Playgroud)

角色映射:

@Entity
public class Role {

    private Long id;
    private Set<UserProfile> userProfiles = …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate cascade jpa-2.0 sql-delete

4
推荐指数
1
解决办法
7670
查看次数

更新/删除查询不能键入JPA

我正在使用Spring框架来开展培训项目.我也在使用JPA,并且一直有一段时间.在我的DAO实现课中,我写道:

@Override
public void deleteEntries(Module mod) {
    System.out.println(mod.getDescription());
    entityManager.createQuery("delete from TrainingEntry e where e.module = :mod and e.completedDate IS NULL",
                              TrainingEntry.class).setParameter("mod", mod);

}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它只是一个简单的DELETE语句,但我收到错误:

"Update/delete queries cannot be typed."
Run Code Online (Sandbox Code Playgroud)

我的猜测是,我需要使用一些EntityManager类方法来完成这项工作,但我不确定,因为在线这个错误几乎没有.我也很难应用我在网上找到的有关JPA删除查询的一些解决方案.任何关于正确方向的点或解释为什么抛出这个错误都非常感激.

java spring jpa entitymanager sql-delete

4
推荐指数
2
解决办法
1万
查看次数