加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL进阶(3)-拼接&子查询

发布时间:2022-12-10 13:34:31 所属栏目:MsSql教程 来源:转载
导读: 计算字段
拼接:将值联结到一起购成单个值
使用的操作符:+或||(Microsoft Access 、SQL Sever使用+号,其他数据库软件可能使用||)
MySQL中,不支持+或||,而是用CONCAT( )函数把项表拼接

计算字段

拼接:将值联结到一起购成单个值

使用的操作符:+或||(Microsoft Access 、SQL Sever使用+号,其他数据库软件可能使用||)

MySQL中,不支持+或||,而是用CONCAT( )函数把项表拼接起来,使用CONCAT( ),上述例子的代码为:

例子: Find the capital and the name where the capital includes the name of the country.

SELECT capital,name FROM world

where capital like concat('%',name,'%')

注意,MySQL中会将上述%识别为通配符,而不是百分号

MySQL中的||等同于操作符OR,而&&等同于操作符AND

COUNT(*):对表中行的数目进行计数,包括空值;

COUNT(column):对特定列中具有值的行进行计数mssql 空值,忽略NULL值;即,若指定列名,则指定列的值为空的行被COUNT()函数忽略,但如果是COUNT( )函数中用的是星号*,则不忽略。

对所有的行执行计算,指定ALL参数或不给参数(因为ALL是默认行为);

只包含不同的值,指定DISTINCT参数;

Microsoft Access 不支持DISTINCT参数;

DISTINCT参数不能用于COUNT(*)

例子:

SELECT AVG(DISTINCT prod_price) AS avg_price FROM Products WHERE vend_id='DLL01';

此代码旨在计算不同价格的平均值。如,有3个数:1,1,2;按照ALL,计算的平均值为:4/3,按照DISTINCT,计算的平均值为:1

WHERE子句过滤行,HAVING子句过滤列或者说WHERE 在数据分组前过滤,HAVING在数据分组后过滤;

仅在与GROUP BY子句结合时,才使用HAVING。

在语句书写中直观表现为:having中只对聚合函数做限制和过滤

子查询:嵌套在其他查询中的查询

利用子查询进行过滤,注意:作为子查询的SELECT语句只能查询单个列

例如:

SELECT cust_name,cust_contact

FROM Customers

WHERE cust_id IN (SELECT cust_id

FROM Orders

WHERE order_num IN(SELECT order_num

FROM OrderItems

WHERE prod_id='RGAN01'));

作为计算字段使用子查询

SELECT cust_name,cust_state,

(SELECT COUNT(*)

FROM Orders

WHERE Orders.cust_id=Customers.cust_id) AS

orders

FROM Customers

ORDER BY cust_name;

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!