请教SQL语句----是否有删除记录的语句?(50分)

  • 主题发起人 主题发起人 冰封
  • 开始时间 开始时间

冰封

Unregistered / Unconfirmed
GUEST, unregistred user!
请教SQL语句----是否有删除记录的语句?
如果想删除记录号为N的记录,从sql中怎么实现。
 
可以。 比较麻烦。 各种数据库的实现方式不同。
我只知道sql server下的方法: 建立一个cursor, 移动到你需要的记录上。 然后运行sql语句delete from ... where current of ...
 
delete from tab where ID=20;
如果没有主键总得给个条件吧,如上所说,如果是ACCESS,没办法
 
游标
可以参考SQLSERVER 的参考手册
 
delete from tab where ID=N;
 
想知道为什么要这样,
 
delete from table
 
re 王公子:
我想实现的是:在查到的记录中删除某一记录。
如,通过where找到了日期为2002.01.01(日期也是操作者选择的)的所有记录,
然后在找到记录中可以让操作者手动的选择删除某记录。
 
用TQuery或TADOQuery查询出结果,然后用Delete方法删除当前记录
 
>>来自:ysai, 时间:2002-12-16 21:18:00, ID:1515475
>>用TQuery或TADOQuery查询出结果,然后用Delete方法删除当前记录

这思路我是有的,不过我不知道要怎么做。
delete from tab where ID=20;要用在什么地方?
我原来的sql里写了select * from table 。
 
delete from tab where ID=20;
是SQL语句,如果你用SQL操作数据库的话,就是删除ID=20的所有记录
如你上面说的,如果在Query1的SQL里面写Select * From Table
Open后,把记录指针移到想删除的记录(可以用TDBNavigator),
然后用Query1.Delete;方法删除当前记录,建议多看看一些例子
 
delete from table1 where a1 in (select top 20 a1 from table1
where a1 not in (select top 19 a1 from table1))
这样行吗?
 
>>来自:ysai, 时间:2002-12-16 21:34:00, ID:1515508
>>如你上面说的,如果在Query1的SQL里面写Select * From Table
>>Open后,把记录指针移到想删除的记录(可以用TDBNavigator),
>>然后用Query1.Delete;方法删除当前记录,建议多看看一些例子

这方法我提问前就已经试过了,可是行不通。
TDBNavigator中删除按键是灰的,准确说是除了移动指针的按键以外都是灰的。
我后来换成通过程序执行Query1.Delete,当执行时会提示“table is read only”。
我一直找不到解决的办法。所以想说用sql语句来显示删除。
 
检查query的LockType,连接的Mode等属性的设置对不对,
不行就删除原来的,拉个新的放在上面
 
re ivw
不行,现在的问题是我不知道delete语句该放哪里。
我原先已经有了select * from table了,接下来dalete该怎么放哪?
 
如果在select后又有insert操作?delete 和select 的count不统一
 
re ysai:
TQuery属性栏里没有LockType、Mode属性。
 
呵呵,我来打字

先选择出记录
With Query do
begin
Close;
Sql.text:='Select * from table Where ....';
Open;
end;
再随便找一个事件,比如你放一个按钮,在按钮的单击事件里面写:
With Query do
begin
if not Eof then
Delete;
end;

这样你在Dbgrid里面选择记录,单击按钮就可以删除了
 
各位:有的TQuery是只读的(如TIBQuery)用query.delete是不行的
看看这样行不行:

IBquery1.sql.clear;
IBquery1.sql.add('select * from abc');
IBquery1.open;
IBquery1.sql.clear;
IBquery1.sql.add('delete from tab where ID=20');
IBquery1.execsql;
这样行吗?
 
后退
顶部