谁能指出如何检查选择查询是否返回非空结果集?
例如,我有下一个查询:
SELECT * FROM service s WHERE s.service_id = ?;
我应该像下面那样做吗:
ISNULL(SELECT * FROM service s WHERE s.service_id = ?)
测试结果集是否不为空?
Answers:
使用@@ ROWCOUNT:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT > 0
-- do stuff here.....
返回受最后一条语句影响的行数。如果行数超过20亿,请使用ROWCOUNT_BIG。
IF EXISTS(SELECT * FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
EXISTS (SELECT 1/0 FROM SERVICE...
-它应该返回一个不能除以零,但它不会
EXISTS (SELECT *
或EXISTS (SELECT 1
或EXISTS (SELECT 1/0
离开
我同意EdB。您应该使用EXISTS方法,但是更有效的方法是:
IF EXISTS(SELECT 1 FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
高温超导
SET SHOWPLAN_ALL ON
forIF EXISTS (SELECT * FROM ...
和 IF EXISTS (SELECT 1 FROM ...
SELECT * FROM service s WHERE s.service_id = ?;
IF @@rowcount = 0
begin
select 'no data'
end
SELECT count(*) as CountThis ....
然后,您可以将其作为字符串进行比较,如下所示:
IF CHECKROW_RS("CountThis")="0" THEN ...
CHECKROW_RS
是一个对象
在我的sql中使用信息功能
select FOUND_ROWS();
它将返回编号。选择查询返回的行数。
好吧,有一种方法可以做更多的代码,但是真的很有效
$sql = "SELECT * FROM messages"; //your query
$result=$connvar->query($sql); //$connvar is the connection variable
$flag=0;
while($rows2=mysqli_fetch_assoc($result2))
{ $flag++;}
if($flag==0){no rows selected;}
else{
echo $flag." "."rows are selected"
}
SELECT * FROM service s WHERE s.service_id = ?;
BEGIN
print 'no data'
END