sql查询不选择值
Posted
技术标签:
【中文标题】sql查询不选择值【英文标题】:sql query don't pick the value 【发布时间】:2015-05-14 07:03:51 【问题描述】:我有简单的 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 条记录
【问题讨论】:
我觉得我没搞清楚,但也许你可以试试 isnull() 或 coalesce() 您的COL3
值是value3
,它不属于您的SELECT
。
@ughai 我的错我的意思是 col2 对不起
【参考方案1】:
我认为问题在于条件id = :php_value
查询有时不返回数据。您可以通过这种方式避免在空name
的表中插入行:
INSERT INTO db_name (COL1, COL2, COL3, ...)
SELECT 'value1', name, 'value3',...
FROM another_table
WHERE id = :php_value
【讨论】:
但 another_table 100% 具有该值。也许是服务器延迟或延迟? @Klapsius 我不了解您的环境,所以我无法透露任何信息。我只能基于您的问题,所以我可以判断id = :php_value
有时无法正常工作。【参考方案2】:
假设您使用的是 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 变量。
【讨论】:
以上是关于sql查询不选择值的主要内容,如果未能解决你的问题,请参考以下文章