标签: sql-delete

如何在SQLite中启用LIMIT for DELETE?

使用PHP,我有一个简单的数据库,可以存储具有相同内容的多个项目.我想在使用DELETE时删除第一次出现的实例.

如何使用PHP在SQLite中启用LIMIT for DELETE?

sqlite limit sql-delete

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

MYSQL删除所有具有count(*)= 1的结果

我有一个表有两个字段sesskey(varchar32,index)和产品(int11)的表,现在我必须删除所有具有group by sesskey count(*)= 1的行.我正在尝试一些方法,但都失败了.

例:

delete from taged where sesskey in (select sesskey from taged group by sesskey having count(*) = 1)
Run Code Online (Sandbox Code Playgroud)

sesskey字段不能成为主键,因为它重复了.

mysql group-by sql-delete

7
推荐指数
1
解决办法
8664
查看次数

根据最大值删除行

如何构建mySQL查询以根据最大值删除行.

我试过了

WHERE jobPositonId = max(jobPostionId)
Run Code Online (Sandbox Code Playgroud)

但是有错误?

mysql sql max mysql-error-1093 sql-delete

7
推荐指数
2
解决办法
3万
查看次数

IN的多个表达式

我有两个相同结构的大(400多万条记录)表,它们有大约300k重复行.我想DELETE使用DELETE IN语法重复行.

我已经使用该MERGE语句完成了它(仅在2008或更新时可用,所以我不能使用它,因为我还在运行2005),而且DELETE EXISTS,但是我在开始DELETE IN工作时遇到了一些麻烦.

我遇到的问题DELETE IN是我的大表有一个复合主键,这意味着我只能使用所有这些列来识别唯一的行.

在T-SQL中是否可以将多个表达式作为IN子句的参数?就像是:

DELETE FROM MyBigTable
WHERE ([Column1], [Column2], [Column3]) IN
    (SELECT [Column1],
            [Column2],
            [Column3]
     FROM MyBigTable
     INTERSECT
     SELECT [Column1],
            [Column2],
            [Column3]
     FROM MyOtherBigTable)
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 sql-delete

7
推荐指数
1
解决办法
152
查看次数

如何删除不在的记录

嗨,我有以下SQL查询,它给出了Project_ched,它存在于ProjectSchemesSchemes表中.我想删除Schemes表中没有记录到ProjectSchemes表的所有记录.我怎么能这样做?请帮忙.我正在使用MSSQL

select scheme_id from Schemes where Scheme_Id
in(select s.Scheme_Id from Projects p 
inner join ProjectSchemes ps on ps.Project_Id=p.Project_Id
inner join Schemes s on s.Scheme_Id=ps.Scheme_Id)
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行以下操作,但它无法正常工作.不工作意味着没有受影响的记录但是当我检查我的Schemes表时,有太多的记录,他们的scheme_id在ProjectSchemes表上找不到

delete from Schemes where Scheme_Id
not in(select s.Scheme_Id from Projects p 
inner join ProjectSchemes ps on ps.Project_Id=p.Project_Id 
inner join Schemes s on s.Scheme_Id=ps.Scheme_Id)
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-delete

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

如果另一个表中不存在id,则从表中删除

我想删除types无法找到的id ,types_photos但我不知道如何实现这一目标.id_typetypes_photos是一样idtypes.这是表的结构如何:

CREATE TABLE IF NOT EXISTS `types` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_user_added` int(11) DEFAULT '0',
  `id_user_edited` int(11) DEFAULT '0',
  `data_name` text NOT NULL,
  `data_name_seo` text NOT NULL,
  `data_type` enum('tag','equipment','search') NOT NULL,
  `datetime_added` datetime NOT NULL,
  `datetime_edited` datetime NOT NULL,
  `ipaddress_added` text NOT NULL,
  `ipaddress_edited` text NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
)

CREATE TABLE IF NOT EXISTS `types_photos` (
  `id` int(11) NOT …
Run Code Online (Sandbox Code Playgroud)

sql multiple-tables sql-delete

7
推荐指数
1
解决办法
8282
查看次数

mysql删除加入?

我可以用

select * from sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6;
Run Code Online (Sandbox Code Playgroud)

顶部选择匹配的行,

如何编写查询以删除双方的匹配行?

就像是

delete sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6;
Run Code Online (Sandbox Code Playgroud)

mysql join sql-delete

6
推荐指数
1
解决办法
906
查看次数

SQLite,检查TEXT字段中是否有任何字母字符

好的,所以我有一个巨大的条目列表,并在其中一个列中(为简单起见,我们称之为num,这是一个数字,类似于123456780000(它们的长度和格式都相同),但有时会有类似的字段这个

12345678E000 
or 
12345678H000
Run Code Online (Sandbox Code Playgroud)

现在,我需要删除num列不完全是数字的所有行.num的类型是TEXT,而不是INTEGER.所以上面的例子应该删除,而不123456780000应该删除.

我尝试了两种解决方案,其中一种可以工作,但是不够优雅和杂乱,另一种根本不起作用.

我尝试的第一件事是

DELETE FROM MY_TABLE WHERE abs(num) == 0.0
Run Code Online (Sandbox Code Playgroud)

因为根据文档,如果给出TEXT值,abs(X)将返回0.0,并且不可转换为实数.所以我认为应该让所有"仅限数字"通过并删除带有字符的那些.但它没有做任何事情,它甚至不删除任一行.

我接下来要做的就是

DELETE FROM MY_TABLE WHERE num LIKE "%A%" OR "%B%" OR "%C%"
Run Code Online (Sandbox Code Playgroud)

这似乎工作,但数据库很大,我不知道哪些字符可以出现,虽然我可以只"%D%" OR "%E%" OR "%F%" OR ...用整个字母表,这感觉不雅和杂乱.我实际上想了解一下SQLite语言.

最后,我的问题是:如何以一种简单的方式解决这个问题?也许我的abs(X)解决方案有问题,或者有其他我不知道/想到的方法?

提前致谢.

编辑:根据我试过的评论SELECT abs(num) FROM MY_TABLE WHERE num like '%A%' ,它返回以下内容

12345678.0
Run Code Online (Sandbox Code Playgroud)

真奇怪.它似乎已经将字母出现的数字分开了.该文件声称如果它无法将其转换为数字,它将返回0.0.嗯..

sql sqlite sql-delete

6
推荐指数
1
解决办法
4273
查看次数

如何删除没有SQL的所有行

是否有其他方法可以删除数据库表的所有行而无需编写SQL删除语句?

List<Item> items = Ebean.find(Item.class).findList();
Ebean.delete(items);
Run Code Online (Sandbox Code Playgroud)

有没有像

Ebean.deleteAll(Item.class)
Run Code Online (Sandbox Code Playgroud)

在Ebean API?

java sql ebean sql-delete

6
推荐指数
1
解决办法
1327
查看次数

删除INTERSECT

我有两个表,列数相同,没有主键(我知道,这不是我的错).现在我需要删除表B中存在的表A中的所有行(它们相等,每个行有30列).

我认为最直接的方法是做一个INNER JOIN并解决我的问题.但是,为所有列编写条件(担心NULL)并不优雅(可能因为我的表也不优雅).

我想用INTERSECT.我不知道该怎么办?这是我的第一个问题:

我试过(SQL Fiddle):

declare @A table (value int, username varchar(20))
declare @B table (value int, username varchar(20))

insert into @A values (1, 'User 1'), (2, 'User 2'), (3, 'User 3'), (4, 'User 4')
insert into @B values (2, 'User 2'), (4, 'User 4'), (5, 'User 5')

DELETE @A 
    FROM (SELECT * FROM @A INTERSECT SELECT * from @B) A
Run Code Online (Sandbox Code Playgroud)

但是所有行都从表中删除了@A.

这让我想到了第二个问题:为什么命令DELETE @A FROM @B会从表中删除所有行@A …

sql sql-server intersect sql-server-2012 sql-delete

6
推荐指数
1
解决办法
4130
查看次数