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

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

发布时间:2020-12-12 08:26:43 所属栏目:MsSql教程 来源:网络整理
导读:我在SQL中是全新的,但是让我们说,在 StackExchange Data Explorer,我只想以名誉列出前15名用户,并且我写了这样的内容: SELECT TOP 15 DisplayName,Id,Reputation,Reputation/1000 As RepInKFROM UsersWHERE RepInK 10ORDER BY Reputation DESC 目前这是一个
我在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-SQL和PL/SQL之类的扩展来扩展SQL语言.

(编辑:李大同)

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

    推荐文章
      热点阅读