‘壹’ 一条sql语句中可否有多个select 或where
一条sql语句是可以有多个select或者where的,具体示例如下:
selecta.idformtableaasawherea.idin(selectb.idfromtablebasbwhereb.id='1');
这样这条sql语句就包含了多个select和where了,需要注意的是在一个select字句里面不能有多个where存在。
‘贰’ 如何在access中同时提交多条sql语句
使用ACCESS查询对象是无法一次运行多个SQL语句的,但是通过ACCESS VBA代码可以实现一次运行多个SQL语句。下面是具体实现方案;
1)新建一个ACCESS窗体,窗体添加一个命令按钮;
2)编写按钮单击事件过程
1
2
3
4
5
6
7
Private Sub Command1_Click()
Dim strSql as string
strSQL="Update Policy SET LatestDueDate=Year(Date()) & '-' & Format(PolicyDate,'mm-dd')"
DoCmd.RunSql strSQL '运行第一个更新语句
strSQL="UPDATE Policy SET LatestDueDate= DateAdd('yyyy',1,LatestDueDate) WHERE (((Month(Date())-Month(LatestDueDate)) > 6) and(PaymentMode='H'))"
DoCmd.RunSql strSQL '运行第二个更新语句
End Sub
跟着点击该命令按钮就可以一次执行两条语句了。
*******不过这里必须指出楼主这种通过UPDATE更新来获取缴费提醒的办法绝对是一种非常糟糕的解决方案,其坏处除了你说的,我可以指出N多条!具体就不说了。******
其实要获取你要获取保单续期提醒日期,无需分两步只要一句SELECT语句就能搞定,完全没必要去更新数据表。
将下列SQL语句保存为一个名为“RenewAlertPolicies的选择查询
1
2
select PolicyNo,PolicyDate,DateAdd('yyyy',1,PolicyDueDate) as LatestDueDate
from Policy where DateDiff('m',PolicyDate, Date()) > 6 order by PolicyDate desc;
注意:上面“保单号”字段名是我虚构的,请替换为实际的保单号字段名。如果不想看太旧的保单,筛选可以用时间段来限制,例如...where DateDiff('m',PolicyDate, Date()) between 7 and 12 ....
当你要查看需要提示续保的保单列表时,简单地双击该查询就好了,你可以随要随查,非常方便,查询结果将会展示最新的情况,完全没必要去考虑如何更新LatestDueDate的问题。
‘叁’ 在winfrom中一个点击事件中两个SQL语句怎么分开执行
如果是单独的执行两条sql语句是没有问题的,但是你要考虑到后面的东西,视图是不可以更新的,也不可以通过视图去更新数据,只有通过视图绑定的查询表来更新数据。
public static void Do(string name)
{
using (SqlConnection conn = new SqlConnection(_ConnString))
{
try
{
conn.Open();
string sql=string.Format("CREATE View VIew_TABLE1 AS SELECT * FROM TABLE1")
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
cmd.CommandText =string.Format( "UPDATE TABLE1 SET NAME='{0}'",name);
cmd.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
这样只有更新绑定视图的表视图就会跟着更新了
‘肆’ sql一个表中同时查询两个count的sql语句
可以有两种解决方法,
所需工具:SQL
查询两个count的方法1:
SELECTpaperName
,COUNT(1)AS总题数
,sum(CASEWHENstatu=1THEN1ELSE0END)AS审核题数
FROMquestion
GROUPBYpaperNme
查询两个count的方法2:
selects.总题数,s.审核题数,s.paperName
from(
selectCOUNT(1)as总题数,casewhenstatus=1thencount(1)else0endas审核题数,paperName
fromquestion
--wherepapernamein(),这个条件可以不要了
groupbypaperNme,stauts--status也要作为分组字段,因为在case中有使用
)s
备注:两个都可以使用。