SQl选择然后将结果用作另一个表上的where

时间:2013-08-19 13:07:19

标签: sql

嗨我的sql写作经验非常少我试图从一个表中做一个简单的选择然后更新另一个

所以例如

select id from customer where name like 'Test'

然后找到每个id,因为可能有多个

update customeractive set active=0 where id= "from the last table"

5 个答案:

答案 0 :(得分:2)

您可以这样做:

update customeractive
    set active=0
    where id in (select id from customer where name like 'Test');

这是标准SQL,可以在任何数据库中使用。

答案 1 :(得分:1)

UPDATE customeractive
SET active=0
WHERE id IN 
(
    SELECT id
    FROM customer
    WHERE name LIKE 'Test'
)

答案 2 :(得分:0)

update customeractive
    set active = 0
from customeractive act
    inner join customer cust on act.id = cust.id
where cust.name like 'Test'

答案 3 :(得分:0)

如果您使用的是SQL Server,则可以执行以下操作:在临时表中选择所需的ID,然后更新所需的ID。

在你的例子中:

Select ID into #TempTable from Customer Where name like 'Teste'

Update   CustomerActive
Set    active = 0
Where Id in
(Select ID from #TempTable).

另一种方法是使用联接

Update    CustomerActive
Set active = 0
From CustomerActive CA
Join Customer C
On CA.ID = C.ID
Where C.name like 'Test'

如果您不使用SQL Server,则可以使用相同的概念。只需检查如何在其他语言上完成。

希望它可以解决您的问题。

答案 4 :(得分:0)

如果您使用的是Microsoft SQL Server,则另一种方法是:

UPDATE customeractive
SET active=0
from customeractive join customer on customeractive.id=customer.id
where name like '% Test%'

顺便说一下,我认为你可能意味着在LIKE语句中使用通配符(例如%)