SQL 子查询

简而言之,SQL 子查询是嵌套在另一个查询中的查询。
其实很简单。
这就像在查询中打开另一个查询窗口。
我们先来说说最重要的事情。
子查询通常用在WHERE子句的IN运算符中进行过滤。
例如,如果我们想要获取购买产品RGA01 的客户的所有信息,我们可以使用子查询找到包含该产品的订单号,然后找到对应的客户ID。

我们去年跑的项目数据量大概有3 000条。
我们使用子查询首先从OrderItems表中过滤出prod_id为'RGA01 '的订单号,然后从Orders表中过滤出该订单号对应的客户ID。
运行结果一目了然,直接给我们想要的客户信息。

一开始我以为子查询只会影响查询的速度,后来发现错了。
它还可以帮助我们更准确地查找数据。
等等,还有一件事,子查询在SELECT语句中是从内到外处理的,即会先执行内层查询,再执行外层查询。

最后一步是根据客户 ID 检索客户相关信息。
这一步其实和上一步类似。
我们只需用子查询替换 WHERE 子句中的 IN 运算符即可。
很多人都没有注意到这一点,但是这样写代码实际上更清晰、更容易理解。

子查询的另一个使用场景是创建计算字段。
例如,我们想要检索每个客户的总订单。
在本例中,我们使用子查询来计算每个客户的订单数,并将结果作为列返回。
该子查询对每个客户执行一次,因此总共执行了 6 个子查询。

说实话,有点复杂。
子查询检索效率有时不太方便,但它是SQL中非常强大的工具。
我认为值得一试,特别是如果您需要精确的过滤和计算字段。
等等,还有一件事,当表中存在同名字段时,我们使用完全限定的表列名称以避免歧义,例如 Orders.cust_id=Customers.cust_id。

总的来说,子查询是SQL中一个非常有用的功能。
虽然有时效率低下,但其灵活性和强大的功能值得我们深入研究和应用。

用SQL,建立名为"出库单价低"的查询,选出出库单价低于入库单价的产品(含产品编?

上次帮小丽清点库存,记得她担心得出了很多汗。
当我查看他的 Excel 表格时,我发现产品编号和仓库价格列出不正确。
我清楚地记得A3 产品的出厂价是5 0,结果在表中写成了5 这提醒我们,写SQL就像做饭一样。
如果配料(数据)不对,调料(查询)再好也是没有用的。
举个简单的例子:
表结构为产品名称(文本)、产品编号(数字)、入库单价(十进制)、出库单价(十进制)。
SQL写法如下: SQL 选择产品名称、产品编号 从产品表 WHERE 入境单价 > 出境单价
保存时,宜表达“出境单价低”。
然而,实际的仓库系统很复杂,可能包括批次号、有效期和供应商字段。
上次我在写一个Vendor筛选的View,发现原始数据中的Vendor代码全是中文缩写,所以花了一下午的时间调试。

等一下,还有一件事。
后来,小李问我。
如果出境价格和入境价格相同,但产品名称中有“促销”字样,可以单独查看吗?我认为你需要改变这个SQL。
SQL 选择产品名称、产品编号 从产品表 WHERE 入站单价 > 出站单价 OR (入站单价 = 出站单价 AND 产品名称 LIKE '% PROMOTION%')
我突然想如果我表中有几千条数据,这个查询会不会特别慢。
我应该添加索引吗?或者数据库本身有这个自动过滤功能吗?

sql server 怎么增删改查

结论:直接使用SQL。

查询: 1 . 定义列:产品 ID;产品名称;价格 价格 > 5 .0 2 . 所有列:选择价格 > 5 .0 的产品; 3 . 列名称:
产品 ID;产品名称;选择“产品编号”作为价格 Price > 5 .0;
SELECT ProductID = '产品编号';产品名称 价格 产品空间 价格 > 5 .0; 4 、逻辑运算符:产品ID;产品名称 价格 在产品空间中价格 >= 5 .0 且价格 <= 1 0.0; 5 、模糊匹配:选择产品名称为“%beer%”的产品。
6 .根据提示:选择SaleID; SellerName FROM Seller WHERE SaleID ('S01 ', 'S02 ', 'S07 '); 7 . NULL值:SELECT Product FROM Product WHERE Price NULL; 8 . 顶部和特点:
Top 5 :从客户中选择前 5 个。

前 2 0%:从客户中选择前 2 0%。

从产品中选择前 6 名,按价格说明排序,
输入: 1 . 使用默认值和 NULL:INSERT INTO Seller(SaleID, SaleName, Sex,birthday, HireDate, Address) VALUES ('S1 1 ', 'Zhao Yufei', DEFAULT, '1 9 7 4 -07 -2 5 ', NULL, NULL);
更新: 1 . 更新指定列: UPDATE Product SET Price = 4 WHERE ProductName = 'Beer';
DELETE: 1 、删除指定条件:DELETE FROM Seller WHERE SaleID = 'S1 1 ';
说实话:记住语法,直接用。