首页 > 解决方案 > 具有不同列顺序和不同 WHERE 条件的 SELECT 返回的行数多于总行数

问题描述

如果我有以下 SELECT 语句:

SELECT COUNT(*)
FROM table1

返回表中的 500 行(没有年龄 = NULL 的行)

SELECT first_name, last_name, occupation 
FROM table1
WHERE age <= 10

返回表中的 200 行

SELECT occupation, last_name, first_name
FROM table1
WHERE age > 10

返回表中的 320 行

这怎么可能?这些数字是任意选择的,但可能是什么原因?谢谢你的建议。

标签: mysqlsql

解决方案


table1 实际上是一个视图,并且在选择时计算年龄值。如果您等待数月直到执行查询 2,那么可能有 20 个人已满 11 岁。

要吸取的教训:永远不要存储年龄,存储出生日期!


推荐阅读