我有一个在SQL中运行的UPDATE和SELECT语句,但是我无法在MYSQL中复制相同的结果。
我有一个表(TBL1),其中有4列:-
col1: registration (VARCHAR)
col2: date
col3: oldest date flag (values Y or blank)
col4: index (priamry key - auto-increment).
一个持续进行的过程继续向表中添加注册和日期。一批添加之后,将删除所有col3'Y'标志,然后更新过程将为注册日期最旧的每一行设置col3值='Y'。
这是SQL代码,在较早的过程删除了任何以前的col3'Y'值之后,此代码按预期工作;-
UPDATE T1
SET T1.Col3 = 'Y'
SELECT FROM TBL1 AS T1
INNER JOIN ( SELECT Col1 AS REG, MIN(Col2) AS MINDATE
FROM TBL1
GROUP BY Col1) AS T2
ON T1.Col1 = T2.REG and T1.Col2 = T2.MINDATE
结果正确识别每个唯一注册的最早日期,并在col3中设置“ Y”。
我需要在MYSQL中复制此过程,但是经过大量的努力,我找不到解决方法?
答案 0 :(得分:0)
如果您只是在寻找相同的逻辑,但是使用MySQL的update join语法,请尝试以下操作:
UPDATE TBL1 T1
INNER JOIN
(
SELECT Col1 AS REG, MIN(Col2) AS MINDATE
FROM TBL1
GROUP BY Col1
) AS T2
ON T1.Col1 = T2.REG and T1.Col2 = T2.MINDATE
SET T1.Col3 = 'Y';