我接下来是DBTable:
在这个数据库中,存在用英语和西班牙语生成的问题。
对于语言= 1是英语,2是同一问题的西班牙语翻译。
我在gridview中只显示特定kiskid的英文问题
要在gridview中显示数据,我使用以下查询:
选择ROW_NUMBER()OVER(订购QMID)AS SrNo,问题,kioskid 来自QuestionMaster,其中Language = 1,KioskID ='K1'
此查询为我提供了以下数据:
现在我想从上面的网格中的数据进行删除查询,这样当我删除“我可以进来吗?”即SrNo = 1,那么其相关的西班牙语也应该被删除。
由于我已经通过获取row_number(它不在DB中)生成了srno,因此创建了一个问题,即删除该问题的下一个等效西班牙语记录。
我尝试在删除查询的位置使用row_number,但它没有给我结果。
请帮帮我。
答案 0 :(得分:2)
为什么这不起作用?
delete from QuestionMaster
where Language = 2 and KioskID = 'K1' and QMID = 1;
如果是因为您没有QMID
,则可以执行以下操作:
delete from QuestionMaster
where Language = 2 and KioskID = 'K1' and
QMID in (select QMID
from QuestionMaster
where Language = 1 and question = 'May I come In'
)
我不确定row_number()
正在做什么。
编辑:
如果要根据QMID删除两个(所有?)记录,请删除where
delete
中的语言条件:
delete from QuestionMaster
where KioskID = 'K1' and
QMID in (select QMID
from QuestionMaster
where Language = 1 and question = 'May I come In'
)
答案 1 :(得分:0)
您是否只能从数据库中检索QMID并使用该QMID删除所有语言的问题?
答案 2 :(得分:0)
为什么需要使用ROW_NUMBER?不会Select * from QuestionMaster where Language = 1
做同样的工作。
和delete from QuestionMaster where QMID = 1
一样?
答案 3 :(得分:0)
您应该在查询中QMID
:
select
ROW_NUMBER() OVER (ORDER BY QMID) AS SrNo
,QMID
,question
,kioskid
from QuestionMaster
where Language=1 and KioskID='K1'
然后在C#/ VB
中创建一个绑定对象public class Question
{
[DisplayName("Serial Number")]
public int SrNo { get; set; }
[Browsable(false)]
public int QMID { get; set; }
public string Question { get; set; }
public int KioskId { get; set; }
}
BrowsableAttribute
表示该列不应显示在DataGridView中。
这样你的删除就更容易了。
delete from QuestionMaster where QMID = @QMID