小编Rob*_*Rob的帖子

带有左连接和分组依赖的MySQL Update查询

我正在尝试创建更新查询,并在获得正确的语法方面几乎没有进展.以下查询正在运行:

SELECT t.Index1, t.Index2, COUNT( m.EventType ) 
    FROM Table t
    LEFT JOIN MEvents m ON
        (m.Index1 = t.Index1 AND
         m.Index2 = t.Index2 AND
        (m.EventType =  'A' OR m.EventType =  'B')
    ) 
    WHERE (t.SpecialEventCount IS NULL)
    GROUP BY t.Index1, t.Index2
Run Code Online (Sandbox Code Playgroud)

它创建一个三元组列表Index1,Index2,EventCounts.它仅在t.SpecialEventCount为NULL的情况下执行此操作.我试图写的更新查询应该将此SpecialEventCount设置为该计数,即上面查询中的COUNT(m.EventType).此数字可以是0或任何正数(因此左连接).Index1和Index2在表t中是唯一的,它们用于标识MEvent中的事件.

如何修改选择查询以成为更新查询?就是这样的

UPDATE Table SET SpecialEventCount=COUNT(m.EventType).....
Run Code Online (Sandbox Code Playgroud)

但我很困惑什么放在哪里,并失败了许多不同的猜测.

mysql group-by

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

在预定义的窗口中从命令行打开Goog​​le Chrome

从Windows Vista(在VBA内,但可能不相关)我打开网页

Shell ("C:\Users\" & Environ$("Username") & "\AppData\Local\Google\Chrome\Application\Chrome.exe -url " & URL)
Run Code Online (Sandbox Code Playgroud)

我想在特定的窗口中打开这些页面.我遇到过--new-window开关,但这总是会创建一个新窗口.我想要一个总是进入预定义窗口的选项,只有当它不存在时才打开它的窗口.

例如

  ...Chrome.exe -window mywindowA -url URL1
  ...Chrome.exe -window mywindowB -url URL2
  ...Chrome.exe -window mywindowA -url URL3
Run Code Online (Sandbox Code Playgroud)

不应该影响任何其他打开的窗口,而是打开2个新窗口,一个包含URL1和URL3,另一个包含URL2.

google-chrome command-line-arguments

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

由Forms导致的Office Service Pack 3.0导致的Excel/VBA自动化错误

安装所有最新的Windows更新后,我的Excel VBA代码在第一个模块的最开始显示自动化错误.它包含一些表单以及VBA代码的众多模块.但是,删除表单(和相关代码)时一切都很好.

大约一年前,在其他一些Windows更新之后发生了同样的事情.然后删除.exd文件就可以了,但当前的更新(包括Service Pack 3)似乎有所不同.

发生了什么,我怎样才能让表格运作起来?所有代码都保持不变,并且在以前的所有Windows/Office更新中都存活了下来.运行Windows 7(在Vista计算机上也是如此)和Office 2007.

windows excel vba windows-update ms-office

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

使用 powershell 拆分 CSV

我有大型 CSV 文件(每个 50-500 MB)。在这些上运行复杂的 power shell 命令需要永远和/或遇到内存问题。

处理数据需要按公共字段分组,比如在 ColumnA 中。因此,假设数据已经按该列排序,如果我随机拆分这些文件(即每个 x 千行),那么匹配的条目仍可能以不同的部分结束。A 中有数千个不同的组,因此将每个组拆分为一个文件会创建多个文件。

如何将其拆分为 10,000 行的文件而不丢失组?例如,第 1-13 行将是 A 列中的 A1,第 14-17 行将是 A2 等,第 9997-10012 行将是 A784。在这种情况下,我希望第一个文件包含第 1-10012 行,下一个以第 10013 行开头。

显然我想保留整行(而不仅仅是 A 列),所以如果我将所有结果文件粘贴在一起,这将与原始文件相同。

csv powershell

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

在 Java 中通过 JDBC 使用 MySQL 的 AutoCommit 语句的最佳实践

在我的 Java 代码中,我通过 JDBC 连接与 MySQL 数据库交互。我设置了一个连接和一些语句(用于重用)

            connect = DriverManager.getConnection(connectionstring);            
            statement = connect.createStatement();
            statement2 = connect.createStatement();
Run Code Online (Sandbox Code Playgroud)

对于大部分代码, statement.executeQuery(query) 很好,但有些操作是“块”,所以我需要确保它们要么一起通过,要么都不做。我相信以下代码可以实现这一点。

            connect.setAutoCommit(false);
            statement.addBatch(insertquery1);
            statement.addBatch(insertquery2);
            statement.addBatch(insertquery3);
            statement.addBatch(insertquery4);
            statement.executeBatch();
            connect.commit();           
            connect.setAutoCommit(true);
Run Code Online (Sandbox Code Playgroud)

据我所知,connect 调用会影响整个连接,因此会影响 statement 和 statement2。此外,我似乎可以创建语句对象设置 AutoCommit 值并且它仍然适用于它。这样对吗?将它们拆分并保留不同的连接对象是否会更好的做法/更有效地仅用于如下所示的自动提交调用?

            // objects purely for batch operations
            connect = DriverManager.getConnection(connectionstring);            
            connect.setAutoCommit(false);
            statement = connect.createStatement();
            // objects for normal operations
            connect2 = DriverManager.getConnection(connectionstring);           
            connect2.setAutoCommit(true);
            statement2 = connect2.createStatement();
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,它们只占调用的不到 1%,但该百分比确实需要分批完成。什么是最佳实践?

java mysql jdbc

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

Java PreparedStatements是关闭性能

我最初定义了一份准备好的声明

          prepstmt=conn.prepareStatement("...");
Run Code Online (Sandbox Code Playgroud)

然后在代码的各个部分使用它(通过函数)

   prepstmt.setDouble(1,x);
   prepstmt.execute();
Run Code Online (Sandbox Code Playgroud)

现在我有时会得到"声明关闭后不允许任何操作." 这是由于代码中其他地方的基础连接被关闭/超时/重置引起的.

现在显然我可以尝试/捕获错误并重置prepstmt然后,但这会使"重新运行"查询更加尴尬,所以想知道首先用类似的东西检查是多么"昂贵"

   if (prepstmt.isClosed())
          prepstmt=conn.prepareStatement("...");
   prepstmt.setDouble(1,x);
   prepstmt.execute();
Run Code Online (Sandbox Code Playgroud)

即在每次使用之前检查准备好的声明是否已关闭.猜测这一点必然会对性能产生一些影响,但不知道有多重要.估计对于我的特定应用程序,其关闭时间不到0.1%.

java prepared-statement

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