【问题标题】:Mysql subqueries with conditions, different results带条件的mysql子查询,结果不同
【发布时间】:2015-04-24 17:25:10
【问题描述】:

我正在处理的项目有问题。

我有 2 张桌子。第一个表是workorder。此表由以下列组成:

  • 身份证
  • relation_code
  • 生成
  • 准备出口

第二张表是workorder_records。列:

  • 身份证
  • workorder_id
  • 说明
  • 已批准

我需要选择每个 workorder 生成 = 0 和 exportready = 0 及其记录计数。但是,只有批准 = 0 和描述 != '' 的记录。

我已经为它写了这个查询:

SELECT *, (SELECT COUNT(*) FROM workorder_records
WHERE workorder_records.approved = 0
AND workorder_records.workorder_id = workorder.id
AND workorder_records.description != ''
) as totalunapproved
FROM workorder
WHERE workorder.generated = 0
AND workorder.exportready = 0

当我在 phpMyAdmin 中执行此操作时,我得到了正确的结果。当我通过连接到同一个数据库的 PHP 脚本运行它时,我得到了不同的结果。例如,workorder_records.description 实际上为空但仍由查询函数返回的结果。

SQL 小提琴链接:http://sqlfiddle.com/#!2/ea8aa/3

感谢任何帮助。

编辑:我通过在 PHP 中进行检查解决了这个问题。这当然不理想,但我只是不明白为什么条件子查询在 PHPMyAdmin 中有效,而不是在我的 PHP 脚本中。

【问题讨论】:

  • 这个查询应该做你想做的,结果应该是稳定的。你能设置一个 SQL Fiddle 来演示这个问题吗?
  • SQL 小提琴:sqlfiddle.com/#!2/ea8aa/3
  • 为什么使用我们的选择?这似乎可以通过标准连接来完成。
  • @MikeBrant 这会改变查询的结果吗?如果是这样,我将如何将此查询更改为 JOIN 查询?
  • 请检查本地和live中每一列的数据类型是否相同?

标签: php mysql phpmyadmin


【解决方案1】:

尝试替换这个

workorder_records.description != ''

workorder_records.description IS NOT NULL

并将 workorder_records.description 默认设为 null。

【讨论】:

  • 遗憾的是这没有帮助。
猜你喜欢
  • 2011-02-18
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 2013-08-10
相关资源
最近更新 更多