小编Mar*_*ith的帖子

我如何在sql中使用max()

我有一个看起来像这样的表:

col1   col2  col3  
------ ----- ----- 
A      1     trout
A      2     trout
B      1     bass
C      1     carp
C      2     tuna
D      1     salmon
Run Code Online (Sandbox Code Playgroud)

我真的只想选择col2最大值的行.

我想要生成的查询将返回以下内容:

col1   col2  col3  
------ ----- ----- 
A      2     trout
B      1     bass
C      2     tuna
D      1     salmon
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

select col1, max (col2) as mCol2, col3
from mytable
group by col1, col2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到:

col1   Mcol2 col3  
------ ----- ----- 
A      2     trout
B      1     bass
C      1     carp
C      2     tuna
D      1 …
Run Code Online (Sandbox Code Playgroud)

sql oracle greatest-n-per-group

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

当故意导致故障时,Catch在SQL中失败

当故意导致故障时,Catch在存储过程中失败.

我试图通过在创建存储过程后更改列名来测试我的存储过程中的catch部分.但是捕获永远不会被执行,并且它会在错误的行处失败.关于我可能做错的任何想法?

重现步骤:

* Create Table ErrorTest 

    CREATE TABLE [dbo].[ErrorTest](

        [ErrorTest] [varchar](50) NULL

    ) ON [PRIMARY]

* Create Stored Procedure TestError

    SET NOCOUNT ON;

    DECLARE @EmailMessage AS VARCHAR(5000)

    BEGIN

        BEGIN TRY

            SELECT  ErrorTest FROM ErrorTest

        END TRY

        BEGIN CATCH             
            declare @error int, @message varchar(4000), @xstate int;
            select @error = ERROR_NUMBER()
                 , @message = ERROR_MESSAGE()
                 , @xstate = XACT_STATE();

        SET @EmailMessage = 'Failure ' + CHAR(13) + 'Error Code: '+ CAST(@error AS VARCHAR)  + CHAR(13) + @message
            EXEC    [leads].[usp_SendEmail]
                    @Mysubject = …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005

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

如何将一个表的行与SQL中另一个表的行划分?

如果我有两个整数值表,如:

Table:Distance
1
2
3
4
5

Table:Time
2
4
6
8
10
Run Code Online (Sandbox Code Playgroud)

如何划分表格:表格距离:实现时间

Result:
0.5
0.5
0.5
0.5
0.5
Run Code Online (Sandbox Code Playgroud)

sql t-sql math division

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

使用单个sql查询在表中插入多个值

如何使用单个语句在 sql 表中插入多个值。在 sql server 2008 中做

sql sql-server-2008

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

ORDER BY FIELD无法正常工作 - 错误消息

我有这个选择:

SELECT pts_name
FROM   products_tecspecs
WHERE  pts_id IN ( 5275, 21, 5276, 5277,
                   5278, 49, 5279 )
ORDER  BY FIELD (pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279) 
Run Code Online (Sandbox Code Playgroud)

我试图得到结果并按照我想要的方式订购.我找到了这个答案但得到了这个错误:#1305 - FUNCTION database_name.FIELD不存在

我试图用IN(这是有效的)得到具体结果,但按我想要的方式排序.

帮助你成为一个人.

mysql

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

SQL Server插入性能

假设我在列上有一个带有聚簇索引的下表(例如,a)

CREATE TABLE Tmp
(
    a int,
    constraint pk_a primary key clustered (a)
)
Run Code Online (Sandbox Code Playgroud)

然后,让我们假设我有两组非常大的行要插入到表中.

  • 第1组)值依次增加(即{0,1,2,3,4,5,6,7,8,9,...,999999997,999999998,99999999})
  • 第2组)值依次递减(即{99999999,999999998,999999997,...,3,2,1,0}

你认为在第一组和第二组中插入值之间会有性能差异吗?如果是这样,为什么?

谢谢

sql-server clustered-index database-performance insert-statement database-fragmentation

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

SQL Server查询优化 - WHERE子句与SELECT子查询

创建连接2个表的查询时.我想到了两种可能的方法来编写查询.下面是一个简化的例子.你能告诉我哪个会更快吗?

SELECT t1.a,
       t2.a
FROM   table1 t1
       JOIN table2 t2
         ON t1.b = t2.b
WHERE  t2.c = 'test' 
Run Code Online (Sandbox Code Playgroud)

要么

SELECT t1.a,
       t2.a
FROM   table1 t1
       JOIN (SELECT a, b
             FROM   table2
             WHERE  c = 'test') t2
         ON t1.b = t2.b 
Run Code Online (Sandbox Code Playgroud)

sql-server query-optimization

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

删除触发器getdate()返回1906年

我想在删除的记录上设置日期/时间戳,但我得到了奇怪的结果.当此触发器触发时,它将日期设置为1906!

我已尝试GETDATE()在查询中使用该函数,UPDATE并在表属性上使用默认值.它适用于我手动输入到DELETED_RECORDS表中的记录,但由于实际删除而移入的任何记录都有1906日期.我不确定发生了什么

ALTER TRIGGER [dbo].[Backup_TT_Deleted_Records]
ON [dbo].[tblLLS_TT]
FOR DELETE
AS
  BEGIN
      INSERT INTO dbo.tblLLS_TT_DELETED_RECORDS
      SELECT *
      FROM   Deleted

      UPDATE dbo.tblLLS_TT_DELETED_RECORDS
      SET    Deleted_DTTM = GETDATE()
      WHERE  dbo.tblLLS_TT_DELETED_RECORDS.Deleted_DTTM IS NULL
  END 
Run Code Online (Sandbox Code Playgroud)

还有上面的触发器,如果​​我在DELETED_RECORDS表上输入一个记录而留下Delete_DTTMnull然后删除一个记录,导致触发器触发它将正确填写该记录,但是进入DELETED_RECORDS表中的记录将再次具有日期我还注意到每条记录的日期增加一天.

知道这里可能会发生什么吗?

您希望我执行的任何其他测试让我知道,我会发布结果.这个很奇怪.谢谢!

sql sql-server sql-server-2000

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

接近SQL语句的替代方法如果不存在任何行,则显示全部

想知道是否有人可能知道一个小的SQL脚本的技巧.

http://sqlfiddle.com/#!3/09638/3

我期待只返回有手动变速器的行并且是福特制造的.如果不存在任何行,则返回所有福特制造的车辆.我目前正在使用IF EXIST条件.我考虑使用临时表来存储第一组数据,然后查看表的rowcount()(插入行== 0)以查看是否需要插入更多数据.可能没有其他方法可以做到这一点,然后我描述了我的两个选项.也许社区对此有一些想法.

示例DDL

CREATE TABLE Cars
(
  Make varchar(50),
  Model varchar(50),
  ManualTransmission bit
);


INSERT INTO Cars
(Make, Model, ManualTransmission)
VALUES
('Ford', 'Taurus', 0),
('Ford', 'Contour', 0),
('Ford', 'Mustang', 0),
('Jeep', 'Liberty', 1),
('Jeep', 'Cherokee', 0);
Run Code Online (Sandbox Code Playgroud)

sql t-sql

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

我可以将一个任意属性添加到标签,如<input type ="text"preference ="silly"/>,然后在JS代码中访问它

有没有办法用无关的属性补充DOM元素,或者标签是否按设计固定了某些属性?举个例子,这可能吗?

<input id="spec" type="text" preference="silly"/> 
Run Code Online (Sandbox Code Playgroud)

然后使用jQuery或DOM请求访问此元素

if ($("#spec").attr("preference")=="silly") {
     document.write("That input is silly")
}
Run Code Online (Sandbox Code Playgroud)

大卫

javascript jquery dom

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