有的时候我们可能需要判断数据库中,某一字段(某一列)下是否有相同值的记录,这时该怎么办呢?根据您所使用的数据库不同,首先你要打开数据库的查询窗口,通过SQL语句来创建查询,然后运行就可以了,具体方法如下:
这里假设数据库中有一个名为student的表,所要查询的字段是name,则判断student表中name字段下是否有相同值的记录的SQL语句为:
1、查询出数据库中总的name字段记录数的值
SELECT COUNT(name)
FROM student
2、查询出数据库中name字段下唯一的记录总数(即查询出不相同的记录数,如果找到相同的记录则取其中一条记录)
SELECT COUNT(name)
FROM student
GROUP BY name
比较上面两次查询的结果,如果一样,则表明student数据库中的name字段下并没有相同值的记录,如果不一样,则表明student数据库中的name字段下有相同值的记录。
可以写存储过程或者触发器。那里有控制语句。和c的差不多。因为SQL是高度非过程化的 语言,不可能有IF的,只能用存储过程处理了。CREATE PROCEDURE order_tot_amt
@o_id int,
@p_tot int output
AS
SELECT @p_tot = sum(Unitprice*Quantity)
FROM orderdetails
WHERE ordered=@o_id
GO
实例 设有两个表为Product,Order_,其表内容如下: Product
产品编号 产品名称 客户订数
001 钢笔 30
002 毛笔 50
003 铅笔 100
Order_
产品编号 客户名 客户订金
001 南山区 $30
002 罗湖区 $50
003 宝安区 $4
请实现按编号为连接条件,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额, 总金额=订金*订数,临时表放在存储过程中 代码如下:
Create proc temp_sale
as
select a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数* b.客户订金 as总金额
into #temptable from Product a inner join Order_ b on a.产品编号=b.产品编号-----此处要用别名
if @@error=0
print 'Good'
else
print 'Fail'
go
SQL语句中是没有if....else...语句的,但可以用case语句代替,而且是所有数据库都支持的,效果和if语句一样,都是表示条件。具体使用语法如下:
case when 条件1,
then 结果1;
when 条件2 ,
then 结果2 ;
else 结果N ,end。
可以有任意多个条件,如果没有默认的结果,最后的else也可以不写。
例如:select case when col1 >1 then col2 else col3 end from XXXtable
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)