仅当从table2返回的值不为null时,我才想在table1中插入来自另一个table2的值
我想要这样的东西
INSERT INTO TABLE1
( IMG_CODE, NAME, AMOUNT)
VALUES ((SELECT MAX(IM_CODE) FROM IMAGE WHERE imf_file_name = 'dfkdf4564654.jpg'), 'Meal', 154 )
WHERE ((SELECT MAX(IMF_CODE) FROM IMAGE WHERE imf_file_name = 'dfkdf4564654.jpg') IS NOT NULL);
此请求引发错误ORA-00933-“ SQL命令未正确结束”
你知道怎么做吗?
/
答案 0 :(得分:2)
您可以使用嵌套子查询来做到这一点:
INSERT INTO TABLE1(IMG_CODE, NAME, AMOUNT)
SELECT t.IM_CODE, 'Meal', 154
FROM (
SELECT MAX(IM_CODE) IM_CODE FROM IMAGE
WHERE imf_file_name = 'dfkdf4564654.jpg'
) t
WHERE t.IM_CODE IS NOT NULL
如果MAX(IM_CODE)
是NULL
,则不会插入该行。
答案 1 :(得分:1)
怎么样?
INSERT INTO TABLE1 ( IMG_CODE, NAME, AMOUNT)
SELECT MAX(IM_CODE), 'Meal', 154
FROM IMAGE
WHERE imf_file_name = 'dfkdf4564654.jpg'
GROUP BY imf_file_name;
这有点微妙。如果没有任何与GROUP BY
不匹配的查询,则仅返回一个带有NULL
值的行。但是,对于GROUP BY
,仅返回匹配的组。因此,如果没有行,则不会插入任何内容。
此方法的优点是可以轻松扩展到多个文件名。