如何选择 col1 值 x 并复制到 col1 值 y 的新行,如果再次运行查询,不应再次复制
Posted
技术标签:
【中文标题】如何选择 col1 值 x 并复制到 col1 值 y 的新行,如果再次运行查询,不应再次复制【英文标题】:how to select col1 value x and copy to new row with col1 value y,if run query again,should not copy again 【发布时间】:2012-10-02 17:57:43 【问题描述】:如何将行复制到select column1 value = 55的同一张表和column 1 value = 56的新行,如果我们第二次运行查询,它不应该再次复制旧行
【问题讨论】:
【参考方案1】:您可以添加一个where
子句来防止使用not exists
重复插入:
insert YourTable
(col1, col2, col3, ...)
select 56 -- New value
, col2
, col3
, ...
from YourTable
where col1 = 55 -- Old value
and not exists
(
select *
from YourTable
where col1 = 56 -- New value
)
【讨论】:
Andomar 先生,我们必须选择现有的 55(旧值)并将该行值添加到新值 56 正如您所写的插入 YourTable (col1, col2, col3, ...) select 56 - - 新值 .. 不会搜索 56 值来复制而不是复制 55 吗? 请不要先生。此答案将搜索值为 55 的行并创建一个副本,将 col1 中的 55 替换为 56。 好吧,安多马尔先生,我不会告诉你.. :) .. 它不工作.. 实际上我必须在 where 子句中选择 2 列值,并且必须检查 56 不存在,这没关系..错误就在不存在之前“其中col1 = 55和col2 = x并且不存在(.....) 什么错误?也许您可以在 sqlfiddle.com 或 data.stackexchange.com 上创建一个示例 我已经这样做了.. INSERT INTO DB2.table (a,b,c,d,e) SELECT 56,b,c,d,e from table WHERE a=55 and b=x并且不存在(select * from YourTable where col1 = 56 -- 新值)以上是关于如何选择 col1 值 x 并复制到 col1 值 y 的新行,如果再次运行查询,不应再次复制的主要内容,如果未能解决你的问题,请参考以下文章