gpt4 book ai didi

sql - SELECT 查询中常量的含义是什么?

转载 作者:行者123 更新时间:2023-12-02 07:10:18 24 4
gpt4 key购买 nike

考虑以下 2 个查询:

1)

USE AdventureWorks
GO
SELECT a.ProductID, a.ListPrice
FROM Production.Product a
WHERE EXISTS (SELECT 1 FROM Sales.SalesOrderDetail b
WHERE b.ProductID = a.ProductID)

2)

USE AdventureWorks
GO
SELECT a.ProductID, a.Name, b.SalesOrderID
FROM Production.Product a LEFT OUTER JOIN Sales.SalesOrderDetail b
ON a.ProductID = b.ProductID
ORDER BY 1

我唯一的问题是知道这些查询中数字 1 的含义是什么?如果我将它们更改为 2 或其他值怎么样?

感谢帮助

最佳答案

第一种情况无所谓;你可以选择 2 或任何东西,真的,因为它是一个存在查询。一般来说,选择常量除了存在查询(它只是将常量放入结果集中的列)之外还可以用于其他用途,但是存在查询是您最有可能遇到常量的地方。

例如,给定一个名为 person 的表,其中包含三列,idfirstnamelastname生日,您可以编写如下查询:

select firstname, 'YAY'
from person
where month(birthdate) = 6;

这会返回类似的东西

name     'YAY'
---------------
Ani YAY
Sipho YAY
Hiro YAY

它没有用,但它是可能的。这个想法是在选择语句中选择表达式,它不仅可以是列名,还可以是常量和函数调用。更可能的情况是:

select lastname||','||firstname, year(birthday)
from person;

这里的||是字符串连接符,year是我自己编的一个函数。

您有时在存在查询中看到 1 的原因是这样的。假设你只想知道是否有一个名字以'H'开头的人,但你并不关心这个人是谁。你可以说

select id
from person
where lastname like 'H%';

但是因为我们不需要id,你也可以说

select 1
from person
where lastname like 'H%';

因为你只关心你是否得到一个非空的结果集。

第二种情况,1是列号;这意味着您希望结果按第一列中的值排序。将其更改为 2 将按第二列排序。

顺便说一下,另一个选择常量的地方是当您从关系数据库转储到高度非规范化的 CSV 文件时,您将在类似 NOSQL 的系统中处理该文件。

关于sql - SELECT 查询中常量的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com