我正在开发 Android 应用程序,它使用位于我的服务器上的主数据库。我想知道是否有一种方法可以让我将主数据库的 ID 列表发送到应用程序,然后应用程序从它自己的数据库中删除不在该范围内的每条记录?
我找到了一些例子
DELETE FROM table WHERE id BETWEEN 1 AND 10
Run Code Online (Sandbox Code Playgroud)
但这将从数据库中删除该范围内的所有内容,我可能有类似 1,2,5,7,10 的内容,我想删除 3,4,6,8,9。那么是否可以做到这一点,而无需使用循环或其他东西来遍历每个ID。
我有一些价值观如下:
MYSTRING
--------
Dharshan
Ramalingam
Devid
Run Code Online (Sandbox Code Playgroud)
我可以通过下面的查询选择特定的行值
select * from ( select mystring , rownum rn FROM teststring )
Run Code Online (Sandbox Code Playgroud)
其中 rn = 2;
告诉我删除第二行的方法,给出行号并给我简短的解释。我已经尝试如下,但它不起作用......
delete from testring where rownum=2;
Run Code Online (Sandbox Code Playgroud) 我有删除到多对一关系的多方面的问题。我已经从关系中删除了所有CascadeTypes,但问题仍然存在。该条目不会被删除(只执行选择,不执行删除查询)。我正在尝试通过 CRUD 存储库调用删除它来删除它。它调用该方法并成功执行但没有任何反应。
关系如下:一个活动有一个分配的课程,一个课程可以有许多分配给它的活动。一个 Activity 有一个特定的 ActivityType。
课程如下。
活动
public class Activity implements Item, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne
@JoinColumn(name = "type_id", nullable = false)
private ActivityType type;
@ManyToOne
@JoinColumn(name = "course_id", nullable = false)
@JsonSerialize(using = CustomCourseSerializer.class)
private Course course;
...
}
Run Code Online (Sandbox Code Playgroud)
课程
public class Course implements Item, Serializable {
...
@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, targetEntity = Activity.class) //cascade = { CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH, …Run Code Online (Sandbox Code Playgroud) 我们需要编写一个 SQL 查询来删除名为 的表中的所有重复电子邮件条目Person,仅根据其最小 ID 保留唯一的电子邮件。
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
+----+------------------+
Run Code Online (Sandbox Code Playgroud)
Id是该表的主键列。
例如,运行查询后,上Person表应具有以下行:
+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+
Run Code Online (Sandbox Code Playgroud)
注意:执行SQL后输出的是整个Person表。需要使用delete语句。
这是我的答案:
delete Person
from Person p
left join
(select Id, Email
from
(select
Id, Email,
ROW_NUMBER() OVER(PARTITION BY Email ORDER BY Id) AS row_num
from …Run Code Online (Sandbox Code Playgroud) cmd.CommandText = "DELETE * FROM dbo.DisplayData"
cmd.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)
我现在有以下删除语句,它在执行时向我抛出错误"'*'附近的语法不正确".
我想要做的是删除DisplayData表中的所有行然后我插入新数据,据我所知这是一个SQL删除所有语句的正确语法?
我在网上看了看,找不到任何说法语不正确的内容.我找不到解决方案.
提前致谢.
可能重复:
MySQL从多个表中删除行
我有5张桌子:
当我删除该成员时,我想从这些表中删除他的所有记录.member_id存在于所有表中.我这样做每个表有5个查询.我可以LEFT JOIN在一个查询中使用或类似的内容吗?
请耐心等待,我是PHP的新手,所以我还不是很好.我正在尝试创建一个按钮,它具有可以删除MySQL数据库中所有行的功能.
我的numtable中有两列:"n_id(主键)"和"num".它们都是INT.
因为现在我在MySQL数据库中填写了3个值:
n_id num
1 4
2 9
3 47
Run Code Online (Sandbox Code Playgroud)
index.html的:
<form method = "post" action = "delete.php">
<input name="delete" type="submit" id="delete" value="Delete">
</form>
Run Code Online (Sandbox Code Playgroud)
delete.php:
$query = ("DELETE FROM numtable WHERE id="delete");
Run Code Online (Sandbox Code Playgroud)
我已经看了很多堆栈溢出,但我只能找到问题,它是一行必须删除,而不是整个表.我的代码肯定是错的,但是我还需要更多什么呢?
我可以看到它也可以TRUNCATE代替DELETE在SQL查询中使用.据我了解,最好使用TRUNCATE数据库是否有非常大的数据,如果数据库不是那么大则删除.那是对的吗?
sql-delete ×7
sql ×5
mysql ×3
database ×2
php ×2
sql-server ×2
java ×1
join ×1
many-to-one ×1
oracle ×1
rownum ×1
spring ×1
sqlcommand ×1
vb.net ×1