sql集合
⑴ 一条查询的sql语句,字段为list集合,是什么意思
选择列表:是指出所查询列,它可以是由一组列名列表、星号、表达式、变量等构成。
选择部分列,并指定它们的显示次序查询结果集合中数据的排列顺序和选择列表中所指定的列名排列顺序相同。
更改列标题,在选择列表中,可重新指定列标题,列名也叫列标题。
删除重复行,选择语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,将ALL设置为默认。
在使用DISTINCT选项时,所有重复的数据行在SELECT返回的结果集合中可以保留一行。
⑵ 关于SQL中的集合查询
比较两个查询的结果,返回非重复值。
EXCEPT 从左查询中返回右查询没有找到的所有非重复值。
INTERSECT 返回 INTERSECT 操作数左右两边的两个查询都返回的所有非重复值。
以下是将使用 EXCEPT 或 INTERSECT 的两个查询的结果集组合起来的基本规则:
所有查询中的列数和列的顺序必须相同。
数据类型必须兼容。
Transact-SQL 语法约定
语法
{ <query_specification> | ( <query_expression> ) }
{ EXCEPT | INTERSECT }
{ <query_specification> | ( <query_expression> ) }
参数
<query_specification> | ( <query_expression> )
查询规范或查询表达式返回与来自另一个查询规范或查询表达式的数据相比较的数据。在 EXCEPT 或 INTERSECT 运算中,列的定义可以不同,但它们必须在隐式转换后进行比较。如果数据类型不同,则用于执行比较并返回结果的类型是基于数据类型优先级的规则确定的。
如果类型相同,但精度、小数位数或长度不同,则根据用于合并表达式的相同规则来确定结果。有关详细信息,请参阅 精度、小数位数和长度 (Transact-SQL)。
查询规范或表达式不能返回 xml、text、ntext、image 或非二进制 CLR 用户定义类型列,因为这些数据类型不可比较。
EXCEPT
从 EXCEPT 操作数左边的查询中返回右边的查询未返回的所有非重复值。
INTERSECT
返回 INTERSECT 操作数左右两边的两个查询均返回的所有非重复值。
备注
如果 EXCEPT 或 INTERSECT 操作数左边和右边的查询返回的可比较列的数据类型是具有不同排序规则的字符数据类型,则根据排序规则优先级的规则执行所需的比较。如果无法执行此转换,Microsoft SQL Server 2005 数据库引擎将返回错误。
通过比较行来确定非重复值时,两个 NULL 值被视为相等。
EXCEPT 或 INTERSECT 返回的结果集的列名与操作数左侧的查询返回的列名相同。
ORDER BY 子句中的列名或别名必须引用左侧查询返回的列名。
EXCEPT 或 INTERSECT 返回的结果集中的任何列的为空性与操作数左侧的查询返回的对应列的为空性相同。
如果 EXCEPT 或 INTERSECT 与表达式中的其他运算符一起使用,则在以下优先顺序的上下文中对其进行评估:
括号中的表达式
INTERSECT 操作数
基于在表达式中的位置从左到右求值的 EXCEPT 和 UNION
如果 EXCEPT 或 INTERSECT 用于比较两个以上的查询集,则数据类型转换是通过一次比较两个查询来确定的,并遵循前面提到的表达式求值规则。
EXCEPT 和 INTERSECT 不能在分布式分区视图定义、查询通知中使用,也不能与 COMPUTE 和 COMPUTE BY 子句一起使用。
EXCEPT 和 INTERSECT 可在分布式查询中使用,但只在本地服务器上执行,不会被推送到链接服务器。因此,在分布式查询中使用 EXCEPT 和 INTERSECT 可能会影响性能。
快速只进游标和静态游标与 EXCEPT 或 INTERSECT 运算一起使用时,在结果集中完全受支持。如果由键集驱动的游标或动态游标与 EXCEPT 或 INTERSECT 运算一起使用,则运算的结果集的游标转换为静态游标。
使用 SQL Server Management Studio 中的图形显示计划功能显示 EXCEPT 运算时,该运算显示为 left anti semi join,INTERSECT 运算显示为 left semi join。
⑶ 一条sql如何用一个集合的元素为条件分个查询出数据条数以集合形式返回
select count(id) as result from table_name where time>'2016-01-01T00:00:00' and time <'2017-01-01T00:00:00'
union
select count(id) from table_name where time>'2017-01-01T00:00:00' and time <'2018-01-01T00:00:00'
这是集合里2个年份的sql,多的以此类推。
字符串可以拼接,就是写个方法,传个int数组进去,生成sql,执行就行了
⑷ sql聚合函数有哪些
聚集函数
和大多数其它关系数据库产品一样,PostgreSQL 支持聚集函数。一个聚集函数从多个输入行中计算出一个结果。比如,我们有在一个行集合上计算 count(数目), sum(总和), avg(均值), max(最大值), min(最小值)的函数。
比如,我们可以用下面的语句找出所有低温中的最高温度:
SELECT max(temp_lo) FROM weather; max
-----
46
(1 row)如果我们想知道该读数发生在哪个城市,可能会用:
SELECT city FROM weather WHERE temp_lo = max(temp_lo); -- 错!不过这个方法不能运转,因为聚集函数 max 不能用于 WHERE 子句中。存在这个限制是因为 WHERE 子句决定哪些行可以进入聚集阶段;因此它必需在聚集函数之前计算。不过,我们可以用其它方法实现这个目的;这里我们使用子查询:
SELECT city FROM weather
WHERE temp_lo = (SELECT max(temp_lo) FROM weather); city
---------------
San Francisco
(1 row)这样做是可以的,因为子查询是一次独立的计算,它独立于外层查询计算自己的聚集。
聚集同样也常用于 GROUP BY 子句。比如,我们可以获取每个城市低温的最高值:
SELECT city, max(temp_lo)
FROM weather
GROUP BY city; city | max
---------------+-----
Hayward | 37
San Francisco | 46
(2 rows)这样每个城市一个输出。每个聚集结果都是在匹配该城市的行上面计算的。我们可以用 HAVING 过滤这些分组:
SELECT city, max(temp_lo)
FROM weather
GROUP BY city
HAVING max(temp_lo) < 40; city | max
---------+-----
Hayward | 37
(1 row)这样就只给出那些 temp_lo 值曾经有低于 40 度的城市。最后,如果我们只关心那些名字以"S"开头的城市,我们可以用:
SELECT city, max(temp_lo)
FROM weather
WHERE city LIKE 'S%'
GROUP BY city
HAVING max(temp_lo) < 40;语句中的 LIKE 执行模式匹配,在节9.7里有解释。
理解聚集和 SQL 的 WHERE 和 HAVING 子句之间的关系非常重要。WHERE 和 HAVING 的基本区别如下:WHERE 在分组和聚集计算之前选取输入行(它控制哪些行进入聚集计算),而 HAVING 在分组和聚集之后选取输出行。因此,WHERE 子句不能包含聚集函数;因为试图用聚集函数判断那些行将要输入给聚集运算是没有意义的。相反,HAVING 子句总是包含聚集函数。当然,你可以写不使用聚集的 HAVING 子句,但这样做没什么好处,因为同样的条件可以更有效地用于 WHERE 阶段。
在前面的例子里,我们可以在 WHERE 里应用城市名称限制,因为它不需要聚集。这样比在 HAVING 里增加限制更加高效,因为我们避免了为那些未通过 WHERE 检查的行进行分组和聚集计算。
⑸ sql 两个集合合并
union.
比如:
select*fromA
union
select*fromB
⑹ 一个sql有多个集合运
比如
ts1 和 ts2
可以用minus 来检查
select * from ts1
minus
select * from ts2
然后
select * from ts2
minus
select * from ts1
如果都返回0行数据,那么说明两者相同
⑺ sql 怎样用一个集合做为输入
string sql = "select * from table where id in ({0})";
string ids = "";
foreach(var item in list)
{
ids+=",'"+item.ToString()+"'";
}
ids = ids.SubString(1);
sql = string.Formart(sql,ids);
⑻ 怎样把sql里读出来的值放到一个集合里
你用代码 返回一个dataset 不就是一个集合吗
你想添加到其他集合 就循环dataset的值·一个个添加进去就行!
⑼ sql 怎样查1列多值全都在一个集合里面
经常做这样的东西自己去建一个bean里面是你ResultSet赛选出来的值读取出来后全部赋值过去过去后声明出那个bean的一个对象赋值给list把list放在request就可以在页面赛选出来了