小编Rad*_*hiu的帖子

ORDER BY仅适用于列别名

所以,我有这个问题

SELECT
    NOTES,
    DATECREATED,
    DATEMODIFIED,
    * 
FROM myTable
WHERE
    USERCREATEDBY = 465
    AND NOTES LIKE ' :%'
ORDER BY DATECREATED
Run Code Online (Sandbox Code Playgroud)

它会抛出这个错误Ambiguous column name 'DATECREATED'.

我发现我的查询没有任何问题,我找到了一个修复方法,其形式是为列添加别名DATECREATED,例如DATECREATED a,按别名排序ORDER BY a.

我不明白为什么会这样,我很想知道为什么.

sql sql-order-by sql-server-2008

3
推荐指数
1
解决办法
127
查看次数

使用WITH(NOLOCK)和Transactions

说我有一个简单的查询,如

Select * From MyTable WITH (NOLOCK)
Run Code Online (Sandbox Code Playgroud)

并且,在执行此查询的同时,另一个用户在事务的上下文中向该表中插入100行.

从理论上讲,在提交或回滚事务之前,Select语句可能会读取插入到表中的100行的子集,因为它正在使用NOLOCK吗?如果我正确理解NOLOCK,这似乎是可能的,但想要验证.

SQL Server 2012

t-sql sql-server sql-server-2012

3
推荐指数
1
解决办法
2808
查看次数

Heroku部署的Django app不成功

我正在尝试将一个Django应用程序部署到Heroku,但是当我运行以下命令时,我得到了这个奇怪的错误.

知道为什么会这样吗?我用谷歌搜索了它,但我没有发现任何有用的东西.

root@ubuntu:~/Desktop/djangos/jobs# git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.154' to the list of known hosts.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

提前感谢任何提示/帮助!

python django heroku

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

表中的隐式ORDER BY顺序

我有一个带有时间戳列和一些其他char列的表.我已按时间戳排序表中的信息,但由于同一时间戳上有更多记录,我不知道显示的顺序是否是它们在表中插入的顺序.

可悲的是桌面上没有索引,所以除了时间戳之外,我没有其他任何东西可以用来订购它们.

例:

      Timestamp            |    Foregin table    |    Foreign table value

2012-10-09 19:29:50.000    |       tableA        |   "random string here"
2012-10-09 19:29:50.000    |       tableA        |   "different string here"
2012-10-09 19:29:50.000    |       tableB        |   "another random string here"
2012-10-09 19:29:50.000    |       tableC        |   "string here"
2012-10-09 19:29:50.000    |       tableD        |   "another string here"
Run Code Online (Sandbox Code Playgroud)

我运行的查询是这样的:

SELECT *
FROM TABLE
WHERE Timestamp BETWEEN 'x' and 'y'
ORDER BY Timestamp
Run Code Online (Sandbox Code Playgroud)

回顾我的结果我假设,但我不确定,查询返回指定列排序的数据,并继续按下一列/列排序结果,以防有多于一列,以升序方式(也许是按文字长度或按字母顺序排列).

能否帮我澄清一下这种情况,因为找到订单对我来说非常重要.

sql sql-order-by sql-server-2008

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

如何在mysql中选择从cast varchar到int的min

如何在mysql中将varchar转换为double值

看,我在varchar中有表列,但它只有数字.因为我想选择最小值的最大值.

请检查以下查询,其中我收到语法错误.

select 
    MAX(CAST(ch1 as INT)) as max_ch1,
    MIN(CAST(ch1 as INT)) as min_ch1 
from t9;
Run Code Online (Sandbox Code Playgroud)

请参考下面的sqlfiddle

mysql sql

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

使用CASE&COALESCE

这种语法只给我一个无用的错误

mentorname附近的语法不正确

我该如何更新以强制显示结果?

SELECT COALESCE(case when
            mentorname LIKE '%Med%' THEN 'MedTronics' end
            mentorname LIKE '%Zi%' THEN 'Zinamice' end
            , 'Total') As [Prov Source]
Run Code Online (Sandbox Code Playgroud)

来自database1

case coalesce sql-server-2008

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

在WHERE子句中的参数上使用DECODE会导致索引短路吗?

我有一个带有多个必需参数的存储过程,并且SELECT其中有一条语句在其WHERE子句中具有多个条件,如下所示:

SELECT *
FROM TABLE
WHERE column_1 = param_1
   AND column_2 = param_2
   AND column_3 = param_3;
Run Code Online (Sandbox Code Playgroud)

此查询工作正常,并且可以正确使用表上的索引。但是需求的变化意味着需要对过程进行调整,以便您可以传递较少的参数(也许只是前两个),但是我们希望过程对存储过程的更改最少。

我提出的建议之一是使用一个DECODE函数来处理每个可能的NULL参数,如下所示:

SELECT *
FROM TABLE
WHERE column_1 = param_1
   AND column_2 = param_2
   AND column_3 = DECODE(param_3, null, column_3);
Run Code Online (Sandbox Code Playgroud)

这样,我认为由于该函数未应用于表列,因此仍将使用索引。我进行了一些测试,即使在这种情况下,查询仍然可以使用并使用索引。

但是我仍然与我们的架构师矛盾(没有其他解释),因为我在WHERE子句中使用函数,因此查询将不使用索引。

我不确定我的更改是否足以证明它将始终使用索引,还是不确定是否应该检查其他情况以及由于该功能无法使用索引的情况DECODE

任何帮助/建议/信息将不胜感激。

oracle performance stored-procedures oracle11g

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

如何在查询中确定基数?

我有两个返回相同结果集的查询,但是在查看执行计划时,它们具有不同的基数值。

查询是:

select acq_cod
    , prp
    , df_val
    , descr
from acqdefprp
where (prp like '%pswd%' or prp like '%Pswd%')
    and prp not like '%kno%'
    and prp not like '%encr%';
Run Code Online (Sandbox Code Playgroud)

select acq_cod
       , prp
       , df_val
       , descr
from acqdefprp
where regexp_instr(prp, 'pswd', 1,1,0,'i' ) > 0
    and regexp_instr(prp, '(encr)|(kno)', 1,1,0,'i' ) = 0;
Run Code Online (Sandbox Code Playgroud)

第一个查询具有以下说明计划:

--------------------------------------------------------------------------------
| Id  | Operation         | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |            | …
Run Code Online (Sandbox Code Playgroud)

oracle oracle11g

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

与FOR XML更改编码连接

我有一个查询,它将一个数字转换为一组ASCII字符,然后尝试将它们连接成一个字符串:

declare @number int = 651854564

;with cte as (
select @number prev_nr
    , cast(char(@number % 256) as nvarchar(100)) nextchar
union all
select prev_nr / 256    prev_nr
    , cast(char((prev_nr / 256) % 256) as nvarchar(100)) nextchar
from cte
where prev_nr <> 0)
select 
    cast(nextchar + '' as nvarchar(100))
from cte
where prev_nr <> 0
for xml path ('');
Run Code Online (Sandbox Code Playgroud)

将上述数字拆分为单个字符所产生的字符为:

characters
ä
‚
Ú
&
Run Code Online (Sandbox Code Playgroud)

但是当尝试将它们连接起来时,FOR XML它们会改变编码,以便最终&转换并连接成最终结果,即:ä‚Ú&amp;

我该如何解决这个问题,以便获得正确的编码并生成ä‚Ú&结果?

我已尝试将所有内容转换为nvarchar(100)但我觉得这没有任何影响(实际上几乎与编码无关 - 或者至少在我的场景中没有用).

我也尝试了众所周知的 …

xml t-sql sql-server

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

SQL Server 2012查询返回不同的日期

我想选择特定日期的特定时间表,即10-04-2018,但它返回值10-03-2018.

SELECT *
FROM tbl_schedule
WHERE [Date] = '10-04-2018'
    AND [StartTime] BETWEEN '8:01'
        AND '9:59'
    OR [EndTime] BETWEEN '8:01'
        AND '9:59';
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

sql sql-server sql-server-2012

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