【问题标题】:Get the maximum value from row and insert in one sql query从行中获取最大值并插入一个sql查询
【发布时间】:2021-12-08 04:49:00
【问题描述】:

我的表格 feedTable 中有以下列

FirstName
LastName
FeedDate

我的表中有以下行

XYZ, XYZ, '2021-10-15'
ABC, ABC, '2021-10-16'
ANA, ANA, '2021-10-15'
ALO, ALO, '2021-10-16'
PAIO, PAIO, '2021-10-16'

现在我想从现有记录中插入一条包含名字、姓氏和最大日期的记录。它应该在同一个查询中。我不想在需要获取最大日期然后插入的地方使用两个操作。执行此操作的最佳方法是什么?

Insert into feedtable (FirstName, LastName, FeedDate) values ('Rahul','B',?)

这里代替“?”我想从 feeddate 中放置最大日期。怎么可能?

请帮忙

【问题讨论】:

  • 你用的是哪个版本的mysql?您将输入名字和姓氏。然后将其与现有的最大日期结合起来。对
  • 指定预期结果。
  • 插入到 feedtable (FirstName, LastName, FeedDate) 值 ('Rahul','B',?) 这里代替 '?'我想从 feeddate 中放置最大日期。这怎么可能?
  • edit您的问题包含您作为评论添加的信息,以允许原始问题中所需的所有信息。

标签: mysql sql spring-data


【解决方案1】:

请在输入名字和姓氏并且日期是现有表记录中的最大日期的情况下尝试此操作。

INSERT INTO feedTable (FirstName, LastName, FeedDate)
SELECT 'Rahul' FirstName
     , 'B' LastName
     , MAX(FeedDate) FeedDate
FROM feedTable

请查看网址https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=1a3ffbc0c701843f7eabf23e40c1d49c

【讨论】:

  • 插入到 feedtable (FirstName, LastName, FeedDate) 值 ('Rahul','B',?) 这里代替 '?'我想从 feeddate 中放置最大日期。这怎么可能?
  • 请检查此查询。
【解决方案2】:

解决方案 #1(适用于 SQL Server)

  CREATE TABLE feedTable (
    FirstName varchar(50),
    LastName varchar(50),
    FeedDate  date);

--Date format MM/dd/yyyy
INSERT INTO feedTable VALUES( 'Shohag', 'Mia', '3/31/2021')
INSERT INTO feedTable VALUES( 'Raju', 'Ahmed', '4/6/2021')
INSERT INTO feedTable VALUES( 'Robin', 'Mia', '4/10/2021')
INSERT INTO feedTable VALUES( 'Emon', 'Paki', '12/8/2021')
INSERT INTO feedTable VALUES( 'Saiful', 'Haque', '3/1/2021')

--for checking current max value
SELECT * FROM feedTable ORDER BY FeedDate

--Inserting into main table after selecting max data
INSERT INTO  feedTable 
SELECT FirstName, LastName,FeedDate
FROM feedTable
Where FeedDate =  (SELECT MAX(FeedDate) FROM feedTable)

--for checking value after inserting
SELECT * FROM feedTable ORDER BY FeedDate

或者可能的第二个选项可以根据您的要求:

Insert into feedtable (FirstName, LastName, FeedDate) values ('Rahul','B', (select MAX(FeedDate) from feedTable) )

SQL Fiddle Link

解决方案 #2(对于 MySql)

insert into feedTable select 'Pradeep', '2', MAX(FeedDate) from feedTable

MySql Fiddle Link

【讨论】:

  • 插入到 feedtable (FirstName, LastName, FeedDate) 值 ('Rahul','B',?) 这里代替 '?'我想从 feeddate 中放置最大日期。这怎么可能?
  • @Rahul 如果满足您的要求,请检查更新的答案
  • 那么有这个子查询和有两个独立的查询,有什么性能差异吗?
  • @Rahul 视情况而定,虽然在这种情况下,我没有检查查询执行计划,您显然可以根据您的数据量检查execution plan
  • 好的,上面的查询也可以加入吗?
猜你喜欢
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多