相关疑难解决方法(0)

你能在mysql的WHERE子句中使用别名吗?

我需要在WHERE子句中使用别名,但它一直告诉我它是一个未知的列.有什么方法可以解决这个问题吗?我需要选择评级高于x的记录.评级计算如下:

sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating
Run Code Online (Sandbox Code Playgroud)

mysql sql having having-clause

119
推荐指数
3
解决办法
9万
查看次数

条款中的未知栏目

我有一个简单的查询:

SELECT u_name AS user_name FROM users WHERE user_name = "john";
Run Code Online (Sandbox Code Playgroud)

我得到Unknown Column 'user_name' in where clause.'user_name'即使之后,我还不能在声明的其他部分提及select 'u_name as user_name'吗?

mysql sql mysql-error-1054

111
推荐指数
10
解决办法
25万
查看次数

来自OpenQuery结果的SQL语句中的"无效的列名"错误

我正在尝试通过链接的SSAS服务器执行SQL查询.初始查询工作正常:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试添加:

WHERE "Value" > 0
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

列名称'Value'无效

我有什么想法可能做错了吗?


所以问题在于处理查询元素的顺序与它们的编写顺序不同.根据这个消息来源:

http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

MSSQL中的评估顺序是:

  1. 加入
  2. 哪里
  3. 通过...分组
  4. HAVING
  5. 选择
  6. 订购

因此,在WHERE和HAVING子句之后才会处理别名.

sql sql-server

20
推荐指数
2
解决办法
8万
查看次数

大圆距离公式:T-SQL

所以我有一个表中有一堆不同的地址.我需要一个proc,它将选择该表中与传入的lat/long值相距指定距离的地址.

我的表的例子如下:

- messageId
- lat (float)
- long (float)
Run Code Online (Sandbox Code Playgroud)

Proc正在传入另一个纬度/长度对(同时float也是一对)以及一个int(英里)

我发现这个http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=81360来计算实际公式,但我无法弄清楚在proc表单中修改它以便能够通过整个列表地址,只给我一个Id<=里程(我传入的)的地址,来自我传入的纬度/经度.

我可以在这里得到任何帮助吗?

谢谢!

t-sql great-circle

9
推荐指数
1
解决办法
3371
查看次数

为什么SQL案例不起作用

我收到错误;列名称"阶段"无效.我已经尝试过我能想到的每一种排列.

<cfargument name="locationFilter" default="" />
    <cfargument name="educationFilter" default="" />
    <cfargument name="workFilter" default="" />
    <cfargument name="diversityFilter" default="" />
    <cfargument name="phaseFilter" default="" />
    <cfquery name="QMentors" datasource="#request.dsn_live#">
        SELECT  
        (case 
        when datepart(year,getdate())-cast(yearstarted as integer) > 29 then '5'
        when datepart(year,getdate())-cast(yearstarted as integer) > 13 then '4'
        when datepart(year,getdate())-cast(yearstarted as integer) > 5 then '3'
        when datepart(year,getdate())-cast(yearstarted as integer) > 1 then '2'
        else '1'
        end) as phase, *
    FROM mentors 
    WHERE 0=0
    AND mentortype='mentor' 
    AND approved='true' 
    AND active='true' 
    AND mentorcat LIKE '%general%' 
        <cfif arguments.locationFilter …
Run Code Online (Sandbox Code Playgroud)

sql coldfusion cfquery case sql-server-2008

2
推荐指数
1
解决办法
368
查看次数