初学者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快速表格,词汇表,语言规范,我可以用来快速拿起语言的语法和语义的任何东西? >我知道有不同的“口味”? 解决方法
不,但您可以放心,即使您在SELECT字段和WHERE子句中都使用它,您的数据库也将进行一次评估(Reputation / 1000).
是的,视图是简化复杂查询的一个选项.
您可以创建一个用户定义的函数,您可以调用类似convertToK的函数,该函数将接收rep值作为参数,并将该参数返回除以1000.但是,对于一个简单的例子,您的示例通常不实用.
我建议练习.您可能希望在Stack Overflow上开始关注mysql标签,每天都会提出许多初学者问题. Download MySQL,如果您认为在您的范围内有问题,请尝试解决方案.我认为这将有助于您提高速度,以及对语言功能的认识.首先没有必要发布答案,因为在这个主题上有一些非常快的枪支,但有一些做法,我相信你可以带回家一些点:)
这些风格实际上是ANSI SQL的扩展.数据库供应商通常使用诸如Transact-SQL和PL/SQL之类的扩展来扩展SQL语言. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |