这是创建表的脚本:
CREATE TABLE clients (
client_i INT(11),
PRIMARY KEY (client_id)
);
CREATE TABLE projects (
project_id INT(11) UNSIGNED,
client_id INT(11) UNSIGNED,
PRIMARY KEY (project_id)
);
CREATE TABLE posts (
post_id INT(11) UNSIGNED,
project_id INT(11) UNSIGNED,
PRIMARY KEY (post_id)
);
Run Code Online (Sandbox Code Playgroud)
在我的PHP代码中,删除客户端时,我想删除所有项目帖子:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
Run Code Online (Sandbox Code Playgroud)
该职位表没有外键client_id,唯一的project_id.我想删除已通过的项目中的帖子client_id.
现在这不起作用,因为没有删除任何帖子.
我有以下实体:
我想使用JPA删除用户的id和用户名的WordSet.
这是实体声明:
用户
@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class User extends AbstractModelClass {
private String name;
private String username;
private String password;
private String email;
@ManyToMany(fetch = FetchType.EAGER)
private Set<Role> roles;
}
Run Code Online (Sandbox Code Playgroud)
UserDictionary
@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class UserDictionary extends AbstractModelClass {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "userDictionary")
private Set<WordSet> wordSets;
@OneToOne(cascade = CascadeType.ALL)
private User user;
@PrePersist
private void addDictionaryToWordSets() {
wordSets.forEach(wordSet …Run Code Online (Sandbox Code Playgroud) 错误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.
例如,在这个例子中,第二行不应该被添加,但它是.
ID Name Description
-------------------------------------
1 HELLO WORLD Saying hello
2 Hello world Saying hello
Run Code Online (Sandbox Code Playgroud)
为了补救不正确的数据,我想删除重复发生时全名大写的行.我可以在SQL中使用正则表达式,这是最好的解决方案,我该怎么做?
该表全文如下
'ADDRESSBOOK_GROUP','CREATE TABLE
ADDRESSBOOK_GROUP(IDint(10)unsigned NOT NULLNAMEdefault''0 '', varchar(255)collate utf8_unicode_ci NOT NULL,DESCRIPTIONtext collate utf8_unicode_ci,ADDRESSBOOK_IDint(10)default NULL,TYPEint(10)unsigned NOT NULL default ''1',PRIMARY KEY(ID),KEYADDRESSBOOK_ID(ADDRESSBOOK_ID))ENGINE = MyISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = DYNAMIC'
编辑 -我也忘了早些时候提到我只想在ADDRESSBOOK_ID为'6'时发生重复检查;
在MySQL上,这不会运行:
delete from robottinosino where date = (select max(date) from robottinosino);
Run Code Online (Sandbox Code Playgroud)
错误信息:
ERROR 1093(HY000):您无法在FROM子句中为更新指定目标表'robottinosino'
题: