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语言.