SQL:Access数据库一次,并获取数据的数据数量和
问题描述:
我新的SQL,我一直在想,如果有一个有效的方式来获得满足一个条件,无论是在一个数据的数据的数量SQL命令。SQL:Access数据库一次,并获取数据的数据数量和
具体来说,我想要实现的是:
- 检查是否存在于表中的任何记录满足用户输入的条件
- 如果是的话,显示数据。否则,显示“找不到数据”。
它就这么简单,但以我目前的SQL知识,我只能想到一种方法来实现这一点,它甚至需要2个SQL命令,我并不高兴。我所想的是:
/*First, count the number of data satisfying the condition.
If this returns 0, show "No data found" */
SELECT COUNT(*) FROM Table WHERE Condition = "XXX"
/*If the first SQL command returns 1 or greater, retrieve all data
and show them */
SELECT * FROM Table WHERE Condition = "XXX"
然而,这两个SQL命令几乎相同,唯一的区别是,有COUNT()为第一位的,这两次访问表。 这能简化任何进一步的,所以我可以实现我想要实现与可能的一个SQL命令是什么?或者有没有其他方法可以更高效地实现这一目标?谢谢。
编辑: 谢谢大家。为了您的信息,我正在编写一个访问数据库的C#程序。我已经使用COUNT(*)的地方,我是能够通过检索数据计数:
string str = "SELECT COUNT(*) FROM Table WHERE condition = 'XXX'";
com = new OleDbCommand(str, connection);
int count = (int)com.ExecuteScalar();
return count;
但如果一个SQL命令返回两个计数和数据,我怎么能检索数据到一个变量?
答
如果你想要得到的计数为它选择给予一定条件的所有列相同的查询,那么你可以考虑使用COUNT()
作为一个分析函数应用于整个表格。
SELECT t.*,
COUNT(*) OVER() cnt
FROM Table t
WHERE Condition = "XXX"
Demo
答
SELECT COUNT(*),* FROM表WHERE条件=“XXX”
答
如果您正在运行使用游标类客户端的SQL,光标可以提供一个rowcount
属性标识受影响的行数。如果是这样,那么您可以简单地运行SELECT * FROM Table WHERE Condition = 'XXX';
并获取从光标中选择的数字或行。
答
我不明白你为什么会需要COUNT(*)
可言,但也许还有更多尚未提供的要求是什么?
如果SELECT *
结果集为空,则没有记录,您可以显示一条消息,该效果。如果结果集不为空,则可以处理并显示数据。
您正在使用的数据库? –
使用分页时,这可能是必需的。 –
@TimBiegeleisen我正在使用SQL Server – JessicaD