You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL临时表异常:log_id有有效值却返回NULL且WHERE查询无结果

临时表log_id列显示值但WHERE条件查询无结果且实际为NULL的问题

我在存储过程内使用临时表存储数据,执行无WHERE子句的查询时能看到插入的数据正确,但针对log_id列(值为100)加WHERE条件查询时却无结果。进一步排查发现,该列实际被识别为NULL,即便无WHERE查询时能看到正确值。

临时表定义

DROP TABLE IF EXISTS tmp_log_ids;
CREATE TEMPORARY TABLE tmp_log_ids (value_id BIGINT, log_id INT NOT NULL);

插入记录

INSERT IGNORE INTO tmp_log_ids (value_id, log_id)
SELECT value_id, log_id FROM log_table;

各查询及对应结果

  1. 无WHERE子句查询:
SELECT * FROM tmp_log_ids;

结果符合预期:

# value_id, log_id
'1', '100'
  1. 带WHERE条件查询:
select * from tmp_log_ids where log_id = 100;

结果为空:

# value_id, log_id
  1. 再次执行无WHERE查询:
select value_id, log_id from tmp_log_ids;

结果显示log_id为NULL:

# value_id,  log_ID
1, null
  1. 排查性查询:
SELECT DISTINCT value_id, log_id, 
       log_id IS NULL, 
       log_id = '', 
       OCTET_LENGTH(log_id), 
       HEX(log_id)
FROM tmp_log_ids;

结果:

# value_id, log_id, log_id IS NULL, log_id = '', OCTET_LENGTH(log_id), HEX(log_id)
'1', NULL, '1', NULL, NULL, NULL
  1. 计数查询:
SELECT COUNT(*) FROM tmp_log_ids WHERE log_id IS NOT NULL;

结果:

# COUNT(*)
'0'

补充信息

  • 存储过程中插入操作实际是在动态SQL中执行的。
  • 执行SHOW COLUMNS FROM tmp_log_ids;的结果:
# Field, Type, Null, Key, Default, Extra
'value_id', 'bigint', 'YES', '', NULL, 'NULL'
'log_id', 'int', 'YES', '', NULL, 'NULL'

请问我忽略了什么?


内容的提问来源于stack exchange,提问作者Rick Scero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:33:21