Łuk*_*Lew 0 mysql sql database null
如何防止内部SELECT返回NULL(当匹配没有行时)并强制查询失败.
INSERT INTO tt (t1_id, t2_id) VALUES (
(SELECT id FROM t1 WHERE ...),
(SELECT id FROM t2 WHERE ...)
);
Run Code Online (Sandbox Code Playgroud)
附带问题:是否有更好的方法来形成此查询(t1_id,t2_id是外键,但可能是NULL)?
怎么样的:
INSERT INTO tt (t1_id, t2_id)
SELECT t1.id, t2.id FROM t1, t2 WHERE ...
Run Code Online (Sandbox Code Playgroud)
只需确保SELECT返回完全符合您的要求INSERT- 因此,如果可能为t1.id和t2.id为NULL,则在WHERE条件(... AND t1.id IS NOT NULL AND t2.id IS NOT NULL ...)中包含相关子句.
SELECT DISTINCT如果出现重复行的可能性,您也可能更喜欢使用.
编辑:如果您需要来自同一个表的不同行的2个ID :
SELECT t1.id, t2.id FROM some_table AS t1, some_table AS t2
WHERE ...
Run Code Online (Sandbox Code Playgroud)