使用PHP,我有一个简单的数据库,可以存储具有相同内容的多个项目.我想在使用DELETE时删除第一次出现的实例.
如何使用PHP在SQLite中启用LIMIT for DELETE?
我有一个表有两个字段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查询以根据最大值删除行.
我试过了
WHERE jobPositonId = max(jobPostionId)
Run Code Online (Sandbox Code Playgroud)
但是有错误?
我有两个相同结构的大(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查询,它给出了Project_ched,它存在于ProjectSchemes和Schemes表中.我想删除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) 我想删除types无法找到的id ,types_photos但我不知道如何实现这一目标.id_type在types_photos是一样id的types.这是表的结构如何:
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) 我可以用
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) 好的,所以我有一个巨大的条目列表,并在其中一个列中(为简单起见,我们称之为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删除语句?
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?
我有两个表,列数相同,没有主键(我知道,这不是我的错).现在我需要删除表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 …