用户
user_id | name
1 | John
2 | Matt
食物
food_id | food_name
1 | A
2 | B
最喜欢的食物
user_id(-> user) | food_id(->food)
2 | 1
我的插入查询
INSERT INTO `fav_food`(user_id,food_id) VALUES(?,(SELECT id from `food` where food_name=?))
当SELECT id from food where food_name=?
子查询返回null时,插入失败并出现错误,应为错误。
我的问题是,仅当子查询返回null或无行时,如何才能忽略插入?谢谢
答案 0 :(得分:1)
具有EXISTS:
INSERT INTO fav_food (user_id, food_id)
SELECT ?, (SELECT food_id FROM food WHERE food_name = ?)
WHERE EXISTS (SELECT 1 FROM food WHERE food_name = ?)
请参见demo
答案 1 :(得分:0)
您可以尝试以下方法:
INSERT INTO `fav_food`(user_id,food_id) VALUES(?,(SELECT id from `food` where food_name=? AND food_name IS NOT NULL))
答案 2 :(得分:0)
根据我之前尝试过的方法,可以通过在存储过程中使用if语句来完成此操作,代码可能类似于以下内容:
if exists (SELECT id from `food` where food_name=?) then
INSERT INTO `fav_food`(user_id,food_id) VALUES(?,(SELECT id from `food` where food_name=?))
end if;