【问题标题】:insert record in one table by copying single row of a single column from another table通过从另一个表中复制单列的单行来在一个表中插入记录
【发布时间】:2011-07-10 03:11:37
【问题描述】:

我有一张表SEND,其中有一列Aname

Aname   
------
GREAME  
PETER   

另一个表 RECEIVE 有 2 列:

Aname                              Permission
-----------------------------------------------
GREAME (copied from table SEND)    'my own value will be inserted here,
                                    specified in insert query'

PETER  (copied from table  SEND)    'my own value will be inserted here,
                                    specified in insert query'

现在如上所示,我只想将表 SEND 中的 Aname 列插入到新表 RECEIVE 中,并在第二列中插入一个新值。

另外,我希望RECEIVE 表中不能插入重复值:

我想要这个:

Aname   Permission
---------------------
GREAME  PLAYER
GREAME  PLAYER --- COULD NOT BE INSERTED
GREAME  SALESMAN   --- COULD BE INSERTED

我正在使用这个查询:

insert into receive(Aname, Permission)
  select Aname , 'Select' 
  from SEND
  where not exists
     (select * from RECEIVE where Aname = 'GREAME' and Permission = 'select')

此查询从SEND 表中获取名称 GREAME 和 PETER,并将它们插入到 RECEIVE 表中,但我希望只提取 GREAME,而不是 PETER。

我该怎么做?

它从表发送中获取所有行,并将它们插入表接收,但我希望只插入一行。所以我希望查询是这样的,但它给出了语法错误:

insert into RECEIVE(Aname , Permission)
  select Aname , 'select' 
  from SEND
  WHERE Aname = 'GREAME'  -------------this line gives error
  where not exists
    (select *  from RECEIVE where aname = 'GREAME' and Permission = 'select')

【问题讨论】:

  • @msrc_s : 先生,它给出了语法错误,我知道我们不能使用两个 where 子句,但它是我希望查询执行的工作的描述。

标签: c# .net sql sql-server sql-server-2005


【解决方案1】:

你不能在一个语句中有两个 WHERE 子句

insert into RECEIVE(Aname , Permission)
  select Aname , 'select' 
  from SEND
  WHERE Aname = 'GREAME'   <=== WHERE #1
  where not exists         <=== WHERE #2
    (select *  from RECEIVE where aname = 'GREAME' and Permission = 'select')

您需要将第二部分更改为 AND:

insert into RECEIVE(Aname , Permission)
  select Aname , 'select' 
  from SEND
  WHERE Aname = 'GREAME'  
  AND not exists
    (select *  from RECEIVE where aname = 'GREAME' and Permission = 'select')

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 2023-03-17
    • 2017-08-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多