2012-03-13 81 views
1

我是大多數時間使用ORM的SQL新手。我有以下查詢別名麻煩:在插入語句中使用別名

command.CommandText = @" 
    INSERT INTO permissions (userid, remoteid) 
     SELECT userid as uid, :remoteid as rid 
     FROM users 
     WHERE companyid = :companyid 
      AND NOT EXISTS (
       SELECT 1 
       FROM permissions 
       WHERE userid = uid 
       AND remoteid = rid 
      )"; 

command.Parameters.AddWithValue("companyid", companyId); 
command.Parameters.AddWithValue("remoteid", resourceId); 

當查詢執行時,我得到以下錯誤:

ERROR: 42703: column "uid" does not exist 

我在做什麼錯?別名是否應該像這樣使用,並可以在INSERT聲明中使用?

+0

如果刪除別名確實查詢工作? – Taryn 2012-03-13 22:20:16

+0

我需要能夠在最內部選擇語句的where子句中引用'uid' – ajbeaven 2012-03-13 22:22:01

回答

1

這個怎麼樣:

command.CommandText = @" 
    INSERT INTO permissions (userid, remoteid) 
     SELECT userid, :remoteid as rid 
     FROM users uid 
     WHERE companyid = :companyid 
      AND NOT EXISTS (
       SELECT 1 
       FROM permissions 
       WHERE userid = uid.userid 
       AND remoteid = rid 
      )"; 

command.Parameters.AddWithValue("companyid", companyId); 
command.Parameters.AddWithValue("remoteid", resourceId); 
+0

是的,在問這個問題後發現這個工作。我還刪除了'rid'別名,並將其替換爲:remoteid參數並將'uid'重命名爲'u1' – ajbeaven 2012-03-13 22:38:58

+0

很高興它可以工作。 – Taryn 2012-03-13 22:39:59