我有简单的SQL插入查询:
INSERT INTO db_name (COL1, COL2, COL3, ...)
VALUES ('value1', (SELECT name FROM another_table WHERE id = :php_value), value3 .....)
但有时COL2
值为NULL,因为SELECT
不选择任何内容(名称存在)是否可以保护空记录?或者我需要更改脚本并在插入之前保持选择(外部插入)?
这不是经常发生的,而是~1 / 3000记录
答案 0 :(得分:2)
我认为问题在于条件id = :php_value
,查询有时无法返回数据。您可以通过这种方式避免使用空name
向表中插入行:
INSERT INTO db_name (COL1, COL2, COL3, ...)
SELECT 'value1', name, 'value3',...
FROM another_table
WHERE id = :php_value
答案 1 :(得分:0)
假设您使用的是PHP。 您可以使用默认值初始化name变量,然后单独运行select查询。
$name = ""; // or whatever you want the default value to be
$query = "SELECT `name` FROM `another_table` WHERE `id` = '" + php_value + "'";
您现在可以从查询中获取名称并将其存储在$ name变量中(您可以先检查数据库返回的值是否为空)。
然后你可以创建下一个查询并运行它嵌入$ name变量。