AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[query-refactor](dba)

Martin Hope
Martin Surasky
Asked: 2019-10-17 18:27:32 +0800 CST

关于 Apex SQL Refactor 和 SSMS 键盘快捷键被破坏

  • 2

嗨 DBA 堆栈交换!

今天我尝试了 Apex SQL Refactor,从一开始就安装并集成到我选择的 T-SQL 开发工具(SSMS 18.3.1)中,我注意到一些键盘快捷键停止工作。

一个例子(也许还有更多,但这个我很确定):在第一次安装和使用 SQL 重构之后(至少需要使用一次重构才能发生这种情况)SSMS 中的“可用数据库”功能(可以通过 CTRL+U 调用)不再起作用。更糟糕的是,这不是一个可配置的快捷方式(就像大多数可以在工具 -> 选项 -> 键盘上配置的键盘快捷方式一样),所以一旦它被破坏,目前唯一的解决方案(让它再次工作)是卸载 SQL 重构。

这个查询快捷方式(“可用数据库”)是一个非常有用的查询快捷方式,人们在 SQL 会话中一遍又一遍地使用它,所以打破快捷方式对我来说是一件大事。

在此处输入图像描述

我正在运行 SSMS (18.3.1) 和 Apex SQL Refactor (2018.08.0364) 的最新可用版本

我的问题是:你也经历过吗?如果是这样,您是如何解决 Apex SQL Refactor 后键盘快捷键不可挽回丢失的问题的?

如果您需要我提供有关我的系统或日志的任何其他信息以帮助您重现此问题,请告诉我。

感谢大家!

sql-server query-refactor
  • 1 个回答
  • 315 Views
Martin Hope
N4v
Asked: 2018-04-06 10:56:17 +0800 CST

迁移表后重构数据库

  • 1

我正在创建一个新的登台数据库,我打算将几个表从旧数据库迁移到其中。这些表在函数和存储过程中被引用。如果我手动做事,我只会迁移表,然后通过将旧表名替换为新表名来修改功能。我认为必须有一种更自动化的方式来做到这一点。

有没有人做过类似的事情;您使用了哪些工具来帮助重构?

sql-server query-refactor
  • 1 个回答
  • 42 Views
Martin Hope
Alex Takitani
Asked: 2016-10-22 05:27:41 +0800 CST

PostgreSQL 查询重构

  • 4

我有一个名为 events 的简单表

它有日期、开始时间、结束时间和状态

我有多个相同日期、开始和结束的事件。

要知道是否有人可以预约,我必须检查该日期是否开始,结束我有一行状态为假(未占用)。

带有一些示例代码的表定义:

CREATE SEQUENCE events_id_seq;

CREATE TABLE events(
  id int4 NOT NULL DEFAULT nextval('events_id_seq'::regclass),
  event_date date NULL,
  status bool NULL DEFAULT false,
  event_start time NULL,
  event_end   time NULL
) ;

INSERT INTO events(event_date,status,event_start,event_end)
VALUES
('2016-10-10', TRUE, '08:00:00','08:30:00'),
('2016-10-10', TRUE, '08:00:00','08:30:00'),
('2016-10-10', FALSE, '08:00:00','08:30:00'),
('2016-10-10', TRUE, '08:00:00','08:30:00'),
('2016-10-10', TRUE, '08:30:00','09:00:00'),
('2016-10-10', FALSE, '08:30:00','09:00:00'),
('2016-10-10', FALSE, '08:30:00','09:00:00'),
('2016-10-10', FALSE, '08:30:00','09:00:00');

select distinct event_date, event_start, event_end, (
    select count(*) from events e1
    where 
        e1.status = false and
        e1.event_date = e.event_date and
        e1.event_start = e.event_start and
        e1.event_end = e.event_end
) as free_slots from
events e
order by event_date, event_start;

在此处输入图像描述

http://sqlfiddle.com/#!15/698b7

它有效,但由于我不是 SQL 专家,我只是在寻求其他形式的建议来解决这个问题,只是想多学一点。

postgresql query-refactor
  • 1 个回答
  • 669 Views
Martin Hope
Kyle Decot
Asked: 2015-01-01 10:41:56 +0800 CST

避免使用多个“或”表达式

  • 13

我有以下 oracle SQL 及其作品,但所有ors 都很难看。有没有更简洁的方法来做到这一点?

SELECT * FROM foobar WHERE
  (SUBJECT ='STAT' and TERM ='111') or  
  (SUBJECT ='STAT' and TERM ='222') or  
  (SUBJECT ='ENGLISH' and TERM ='555') or 
  (SUBJECT ='COMM' and TERM ='444') or
  (SUBJECT ='COMM' and TERM ='333') or  
  (SUBJECT ='STAT' and TERM ='666')
  ...
oracle query-refactor
  • 3 个回答
  • 2965 Views
Martin Hope
Pedro Werneck
Asked: 2013-01-24 17:01:48 +0800 CST

查询与where条件的区别

  • 2

我需要找到表 A 中所有行的 ID,而表 B 上没有匹配的行。按照这个问题的答案,我使用这样的左连接:

select A.id from A left join B on B.id_A = A.id where B.id_A is null;

它工作得很好。但是现在我需要使用附加条件进行相同的查询以进行匹配,这意味着我需要找到表 A 中所有行的 ID,而表 B 上没有匹配行,其列 c 的值为 x。如果我尝试类似的东西:

select A.id from A left join B on B.id_A = A.id where B.id_A is null and B.c = x;

它显然给了我一个空的结果集。

到目前为止,我想做到这一点的唯一方法是使用带有“不存在”子句的 B 子查询:

select A.id from A where not exists (select id from B where B.id_A = A.id and B.c = x);

关于如何在不使用子查询的情况下通过连接执行此操作的任何想法?

mysql query-refactor
  • 1 个回答
  • 80 Views
Martin Hope
Rachel
Asked: 2012-10-20 09:23:02 +0800 CST

有没有办法通过重复 TableB 将 TableA 的每一行连接到较小的 TableB 的一行,但是需要多次?

  • 8

抱歉,标题令人困惑,我不确定在那里写什么。

我有一张包含数百条记录的表格。我需要将此表的每条记录分配给一个小得多的动态用户表,用户应该轮流分配给他们的记录。

例如,如果表 A 是

Row_Number() ID
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10

表B是

Row_Number() ID
1 1
2 2
3 3

我需要一个最终结果集

UserId RecordId
1 1
2 2
3 3
1 4
2 5
3 6
1 7
2 8
3 9
1 10

我设法使用 mod 运算符做了一些有点混乱的事情,但我很好奇是否可以在没有临时表和变量的情况下运行相同的查询。

使用临时表是因为 TableA 实际上是一个用户定义函数,它将逗号分隔的字符串转换为表,我需要 UDF 中的对象计数。

-- Converts a comma-delimited string into a table
SELECT Num as [UserId], Row_Number() OVER (ORDER BY (SELECT 1)) as [RowNo]
INTO #tmpTest
FROM dbo.StringToNumSet('2,3,1', ',') 

DECLARE @test int
SELECT @test = Count(*) FROM #tmpTest

SELECT *
FROM #tmpTest as T1
INNER JOIN (
    SELECT Top 10 Id, Row_Number() OVER (ORDER BY SomeDateTime) as [RowNo]
    FROM TableA WITH (NOLOCK)
) as T2 ON T1.RowNo = (T2.RowNo % @test) + 1

UserIds 也交替使用很重要。我无法将记录的前 1/3 分配给 User1,将记录的第二个 1/3 分配给 User2,将记录的第三个 1/3 分配给 User3。

此外,UserIds 需要保持它们最初输入的顺序,这就是为什么我Row_Number() OVER (ORDER BY (SELECT 1))在用户表中有一个

有没有一种方法可以在单个查询中连接这些表,这样我就不需要使用临时表和变量了?

我正在使用 SQL Server 2005

sql-server-2005 query-refactor
  • 2 个回答
  • 488 Views
Martin Hope
BZN_DBer
Asked: 2011-12-07 16:34:24 +0800 CST

我的案例陈述是否因使用外部申请而中断?

  • 1

我正在为一个不起作用的案例陈述而苦苦挣扎。很简单,我需要在问号所在的位置提供 0 值。我还有其他几个处理单独列的案例语句,但这是最简单的。我之前使用过带有 NULLS 的 case 语句,没有问题。我最好的猜测是 OUTER APPLY 搞砸了,但我找不到任何文档来支持它。

SELECT TOP 20
  GIVE_BACK1.CLUB_TOT 'B1_TOT',
  GC.CLUB_USER_VARBL3
FROM
  SUMMIT.CLUB_MBRSP GC
    OUTER APPLY
    (
      SELECT
        CASE 
          WHEN B1.CLUB_USER_VARBL3 IS NULL
            THEN '?????????????????????????????'
          ELSE
            B1.CLUB_TOT
        END AS 'CLUB_TOT'
      FROM
        SUMMIT.CLUB_MBRSP B1
      WHERE
        GC.ID = B1.ID
        AND
        (
          (
            GC.CLUB_USER_VARBL3 != 'LT'
            AND B1.CLUB_USER_VARBL3 = LEFT(GC.CLUB_USER_VARBL3,2) + CONVERT(varchar(2),(CONVERT(INT,RIGHT(GC.CLUB_USER_VARBL3,3))-1))
          )
        )
    ) GIVE_BACK1

此查询产生此结果集

NULL         FY88 
NULL         FY10 
NULL         FY01 
NULL         FY99 
NULL         FY97 
NULL         FY99 
NULL         FY97 
NULL         FY02 
NULL         FY01 
17525.00     FY85 
NULL         FY84
...

任何有助于使案例陈述正常工作的帮助,以及对问题或重构的解释,将不胜感激。

sql-server-2008 query-refactor
  • 1 个回答
  • 1286 Views
Martin Hope
goric
Asked: 2011-02-09 16:17:31 +0800 CST

您如何重构丑陋的过程/查询?

  • 6

我继承了一个数据库,其中包含几个 1000-1500 行长的过程,复杂的嵌套子选择在某些地方深入到 7 或 8 层。为了我自己的理智,我迫切需要重构它们,但我如何才能开始这样做,并确信它们仍然可以正常工作?

如果这是 .Net,我会编写单元测试 - 您是否推荐类似的方法?

stored-procedures query-refactor
  • 3 个回答
  • 884 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve