初学者SQL部分:避免重复表达

前端之家收集整理的这篇文章主要介绍了初学者SQL部分:避免重复表达前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在sql中是全新的,但是让我们说,在 StackExchange Data Explorer,我只想以名誉列出前15名用户,并且我写了这样的内容
SELECT TOP 15
  DisplayName,Id,Reputation,Reputation/1000 As RepInK
FROM
  Users
WHERE
  RepInK > 10
ORDER BY Reputation DESC

目前这是一个错误:无效的列名称“RepInK”,这是有道理的,我认为,因为RepInK不是用户列.我可以通过说WHERE Reputation / 1000> 10,基本上重复该公式.

所以问题是:

>我可以在WHERE子句中实际使用RepInK“列”吗?

>我可能需要使用此列创建虚拟表/视图,然后对其执行SELECT / WHERE查询

>我可以命名一个表达,例如声望/ 1000,所以我只需要在几个地方重复名字而不是公式?

>你叫什么?替代宏?一个功能?一个存储过程?

>有没有一个sql快速表格,词汇表,语言规范,我可以用来快速拿起语言的语法和语义的任何东西?

>我知道有不同的“口味”?

解决方法

Can I actually use the RepInK “column” in the WHERE clause?

不,但您可以放心,即使您在SELECT字段和WHERE子句中都使用它,您的数据库也将进行一次评估(Reputation / 1000).

Do I perhaps need to create a virtual table/view with this column,and then do a SELECT/WHERE query on it?

是的,视图是简化复杂查询的一个选项.

Can I name an expression,e.g. Reputation/1000,so I only have to repeat the names in a few places instead of the formula?

您可以创建一个用户定义的函数,您可以调用类似convertToK的函数,该函数将接收rep值作为参数,并将该参数返回除以1000.但是,对于一个简单的例子,您的示例通常不实用.

Is there an sql quicksheet,glossary of terms,language specification,anything I can use to quickly pick up the Syntax and semantics of the language?

我建议练习.您可能希望在Stack Overflow上开始关注mysql标签,每天都会提出许多初学者问题. Download MySQL,如果您认为在您的范围内有问题,请尝试解决方案.我认为这将有助于您提高速度,以及对语言功能的认识.首先没有必要发布答案,因为在这个主题上有一些非常快的枪支,但有一些做法,我相信你可以带回家一些点:)

I understand that there are different “flavors”?

这些风格实际上是ANSI SQL的扩展.数据库供应商通常使用诸如Transact-SQLPL/SQL之类的扩展来扩展sql语言.

原文链接:https://www.f2er.com/mssql/76094.html

猜你在找的MsSQL相关文章