2017-09-26 40 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” –