【问题标题】:SQL Query with a Condition between 2 Tables具有 2 个表之间条件的 SQL 查询
【发布时间】:2017-09-26 08:32:58
【问题描述】:

我正在尝试:

1) 查找 1 个对象是否包含我在表 1 中输入的相同用户名和密码

2) 如果有一个对象包含相同的用户名和密码,那么

3) 在表 2 中执行 INSERT 语句。

到目前为止,我得到的最好的是:

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

【问题讨论】:

  • mysql 还是 sql server?
  • 我的服务器是SQL服务器

标签: mysql sql sql-server sql-insert sql-query-store


【解决方案1】:

您可以从table1 中选择要插入的字符串并将条件移至where 子句。这样,您就有了一个语句,如果用户名和密码匹配,则插入一条记录,如果不匹配,则不插入记录:

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

【讨论】:

  • 这不符合“查找是否有 1 个对象...”的要求 - 可以添加 TOP 1(尽管这仍然不完全正确)
  • 我假设用户名和密码组合是唯一的(可能是错误的)
  • 是的,每个用户名和密码的组合都是唯一的,所以实际上它只会包含 1 个自身。我尝试了您的建议,但收到错误“#1241- 操作数应包含 1 列”
  • SELECT 部分是否正确?它不会尝试从表 1 中检索“mythings”(我想插入表 2 的对象)吗?
  • @NickHarper 是的,'mythings' 是正确的 - 它查询您尝试插入的文字
【解决方案2】:

如果您在脚本或存储过程中执行此操作,请使用 IF,例如

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

【讨论】:

  • 我使用的服务器不允许我使用“EXISTS”
  • 您使用的是什么服务器?你已经用 sql-server 标记了这个问题
【解决方案3】:
    IF EXISTS (SELECT 1 FROM Tabel1 WHERE Username = @Username  AND Password= @Password))
    BEGIN
        INSERT INTO Table2 Values(@Username,@Password)
    END

【讨论】:

  • 我使用的服务器不允许我使用“EXISTS”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 2017-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多