Mysql 如何使用联接仅在条件为真时插入?
进行更新时,如果用户有权更新,我可以检查相关列,如以下示例所示:Mysql 如何使用联接仅在条件为真时插入?,mysql,sql,join,insert,sql-update,Mysql,Sql,Join,Insert,Sql Update,进行更新时,如果用户有权更新,我可以检查相关列,如以下示例所示: UPDATE answer JOIN test ON answer.test_id = test.id SET test_answer.answer = 'this is my answer' WHERE answer.id = 4 AND test.user_id = 8; 我想做一些类似的事情时,做插入,但我不知道如何。我试过这样的方法: INSERT INTO answer (id, test_id, answ
UPDATE answer
JOIN test ON answer.test_id = test.id
SET
test_answer.answer = 'this is my answer'
WHERE answer.id = 4 AND test.user_id = 8;
我想做一些类似的事情时,做插入,但我不知道如何。我试过这样的方法:
INSERT INTO
answer (id, test_id, answer)
VALUES
(null, 10, 'this is my answer')
JOIN
test AS test ON test.id = 10
WHERE
test.user_id = 8;
这里的想法是,只有拥有测试的用户才能为测试添加答案
我还可以首先获取id为10的测试,检查此测试的用户id是否为8,然后进行插入。但是我试着在一个查询中这样做。对于
INSERT
没有这样的语法,您可以在其中应用where
子句。若您希望限制用户添加答案,则仅当用户具有权限时。这意味着您需要首先查询您的test
表,查看用户是否有此test\u id
的权限,因为每个答案都应该与test\u id
关联
SELECT test_id from test where test.id = 10 and test.user_id = 8;
若上面的查询返回任何行,那个么用户有权向这个特定的测试添加答案。然后,执行您的
insert
SQL,您不需要任何WHERE
子句(正如您尝试的那样)。insert没有这样的语法,但您需要让我们知道,您到底想在中实现什么insert@Ravi那么这是否意味着唯一的方法是首先获取id为10的测试,并检查权限,然后进行插入?您的加入无效。你甚至连桌子都不参加。我不知道,你想干什么。你需要哪种权限来分享你的设计,以及你想要达到的目标。看起来你的表格设计很糟糕,你能分享你现有的表格设计吗?