2017-09-26 74 views
1

我想:SQL查詢2個表之間的條件

1)找到1個對象是否包含相同的用戶名和密碼,我已經輸入,表1

2)如果有包含相同的用戶名和密碼的對象,然後

3)執行INSERT語句中表2

到目前爲止,我已經得到了最好的是:

(CASE WHEN table1 WHERE Username='myusername' AND Password='mypassword' 
    THEN (INSERT INTO table2(things) VALUES('mythings')) 
ELSE Null END) 
+2

MySQL或SQL服務器? – Sami

+0

我的服務器是一個SQL服務器 –

回答

2

您可以從table1中選擇要插入的字符串,並將條件移至where子句。這樣,你有一個聲明,表示任何一個插入記錄,如果用戶名和passowrd匹配,或沒有記錄,如果他們不這樣做:

INSERT INTO table2(things) 
SELECT  'mythings' 
FROM  table1 
WHERE  Username='myusername' AND Password='mypassword' 
+0

這不符合要求「找到1個對象...」 - 也許增加一個「TOP 1」(雖然這仍然不完全正確) –

+0

我正在做一個(可能假)假設用戶名和密碼組合是唯一的 – Mureinik

+0

是的,每個用戶名和密碼的組合是唯一的,所以它真的只包含1個。 我試過你的建議,但被給出錯誤「#1241-操作數應該包含1列」 –

0

如果您在腳本或存儲過程使用IF,例如這樣做

IF EXISTS (SELECT 1 FROM table1 WHERE Username='myusername' AND Password='mypassword') 
BEGIN 
    INSERT INTO table2 VALUES('mythings') 
END 
+0

我使用的服務器不允許使用「EXISTS」 –

+0

您使用的服務器是什麼?你已經用sql-server標記了這個問題 – SQLBadPanda

0
IF EXISTS (SELECT 1 FROM Tabel1 WHERE Username = @Username AND Password= @Password)) 
    BEGIN 
     INSERT INTO Table2 Values(@Username,@Password) 
    END 
+0

我正在使用的服務器不允許我使用「EXISTS」 –