【问题标题】:Select and Insert Query in One Query?在一个查询中选择并插入查询?
【发布时间】:2013-11-20 06:39:50
【问题描述】:

帐户表

 user_id   description    credit  debit    created      modified
    01        Earned        10      0    06-11-2013     06-11-2013 
    02        Normal        0       1    05-11-2013     05-11-2013      
    03        Earned        5       0    04-11-2013     04-11-2013  
    04        Earned        20      0    03-11-2013     03-11-2013      
    05        Normal        0       1    02-11-2013     02-11-2013  
    01        Earned        5       0    02-11-2013     02-11-2013
    01        Normal        0       1    01-11-2013     01-11-2013
    02        Earned        10      0    01-11-2013     01-11-2013

我尝试了以下查询:

SELECT SUM(CASE WHEN description LIKE  '%Earned%'
THEN Credit
ELSE 0 
END ) as cre, SUM(debit) as deb FROM accounts
WHERE created is between '$Monday' AND '$Sunday'

INSERT into accounts (user_id, description, credit, debit, created, modified) 
VALUES ( 'user_id', 'Removed Free Earned', 'cre', 'deb', Now(), Now()); 

我想根据用户选择 Account 表和 Sum credit 和 Sum debit,例如如果 user_id 01 Total credit 是 10 并且 Total debit in last Monday to Sunday 为 3,则应在“deb”的插入查询位置添加 7 个点。但如果总贷方为 10 且借方总额为 20,则如果借方大于贷方,则不会添加任何积分。

我希望选择和插入查询应该写成一个查询。

【问题讨论】:

  • 您不能在单个操作中执行 SELECT 和 INSERT,但可以考虑提供适当的 DDL 和/或相同的 sqlfiddle,我们会看看是否能提供帮助。

标签: mysql


【解决方案1】:

您可以使用以下查询

INSERT into newaccounts (user_id, description, credit, debit, created, modified) 
SELECT user_id,description,
SUM(CASE WHEN 
description = 'Earned' 
THEN credit 
ELSE 0 
END) cre,
SUM(debit) as deb,NOW(),NOW() 
FROM accounts 
WHERE created between '03-11-2013' AND '04-11-2013'; 

http://sqlfiddle.com/#!2/da06e/1的演示

【讨论】:

    【解决方案2】:

    您可以使用 MySQL 的 insert select 语法。

    INSERT INTO accounts (col1, col2) SELECT col1, (expr) AS col2 FROM accounts
    

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 2016-08-26
      • 2013-11-15
      • 1970-01-01
      相关资源
      最近更新 更多