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查询不选择值的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询从某些表中不存在的子选择返回值?

由于计数,db2/sql 查询不允许从连接中选择静态值

SQL 查询有效地选择不完美的重复项

查询中的SQL选择字段不影响查询结果

如何编写基于组合框选择的单个 sql 查询?

sql查询以选择两列中具有相同id但不同值的记录