继续此之后:SQL INSERT from SELECT并在那里标记正确答案。
我还需要能够通过使用用户名检查该行是否已存在。那么我会删除然后插入还是有更好的方法? 如果是删除,我怎么说DELETE FROM表WHERE UserID = 用户名选择 感谢
答案 0 :(得分:2)
如果删除,则可以使用:
DELETE a FROM Avatar a LEFT JOIN User u ON a.UserID=u.UserID WHERE u.UserName='theusername'
答案 1 :(得分:0)
尝试使用REPLACE INTO
代替INSERT INTO
。如果指定了UserID并且该表是表的主键,则会覆盖其UserID与您插入的内容相匹配的行。
要回答您的子问题,请DELETE FROM table WHERE UserID IN (SELECT UserID ...)
附注:StackOverflow实际上不适合学习基本SQL。如果您先阅读 ,那么您的问题会更好,相应的答案会更有用。
答案 2 :(得分:0)
来自您正在进行“从select中插入”的另一个问题,我假设您不希望插入已经尝试插入的键的条目的行。我还假设它给你一些错误,比如“找到重复的密钥”。
根据我的假设,修复很简单:在INSERT之后添加IGNORE关键字,所以你的查询看起来像这样:
INSERT IGNORE... //rest of query