Sql server 基于三个表更新列

Sql server 基于三个表更新列,sql-server,sql-update,Sql Server,Sql Update,我知道这很不专业,但这是我们的业务系统,所以我不能改变它 我有三个表:t_posList、t_url、t_type。表t_posList有一个名为URL的列,该列也存储在表t_URL中。表t_URL的ID没有保存在t_posList中,因此我必须像posList.URL=t_URL.URL一样查找它 每个数据行的列t_posList.status都应该更新为“non customer”,它将是一个状态id,但如果在t_type.url_id中找不到t_url的id,请保持简单 因此,查询有两个步

我知道这很不专业,但这是我们的业务系统,所以我不能改变它

我有三个表:t_posList、t_url、t_type。表t_posList有一个名为URL的列,该列也存储在表t_URL中。表t_URL的ID没有保存在t_posList中,因此我必须像posList.URL=t_URL.URL一样查找它

每个数据行的列t_posList.status都应该更新为“non customer”,它将是一个状态id,但如果在t_type.url_id中找不到t_url的id,请保持简单

因此,查询有两个步骤:首先,我必须获取t_posList.Url=t_Url.Url的所有数据行。在此之后,我必须检查在t_type.url_ID中找不到找到的t_url行的哪个ID

我真的希望你明白我的意思。因为我们的系统非常不专业,而且我的SQL知识不是很好,所以我无法进行此查询

编辑:我试过这个:

UPDATE t_poslist SET status = ( 
    SELECT 'non-customer'
    FROM t_url, t_type
    WHERE url in 
           (select url from t_url 
            LEFT JOIN t_type ON t_url.ID = t_type.url_id 
            WHERE t_type.url_id is null)
)
这个怎么样

UPDATE p
SET status = 'non-customer'
FROM t_poslist  p
INNER JOIN t_url u ON u.url = p.url
WHERE NOT EXISTS
(
  SELECT * FROM t_type t WHERE t.url_id = u.ID
)

sory没有为我工作,但我认为这是我数据库中的一个问题。我会让它保持原样,因为它是一个学校/公司的项目,我必须在16.04=>之前完成它,而不是我优先考虑的项目。