mysql—如果表中没有数据,如何为列指定默认值?

aoyhnmkz  于 2021-06-15  发布在  Mysql
关注(0)|答案(4)|浏览(484)

例如:我们有一张table Person 带列 Name, Age .
如果table Person 是空的,我希望默认值为 "no person"Name 列和 0age 列。
我们怎么做?
我试过了 IFNULL 但它没有给出任何默认值。它只显示表为空。

5ktev3wc

5ktev3wc1#

你不会在数据库里做这个,你会在前端做。
如果您绝对坚持db应该提供此数据,那么一个可能的查询如下所示:

SELECT Name, Age FROM Person
UNION ALL
SELECT 'No person', 0 FROM dual a WHERE NOT EXISTS (SELECT 1 FROM Person)

所有这些建议coalesce或ifnull的人似乎都忽略了一个事实,即根本没有任何行可供选择。在上面的查询中,最下面的查询(union all之后的所有内容)是一个查询,如果person在其中没有任何记录,那么它将生成一行

qv7cva1a

qv7cva1a2#

使用 COALESCE ```
select case when name<>''
then COALESCE (name,'No name') else 'No name' end,
COALESCE (age,0) from Person

qrjkbowd

qrjkbowd3#

对检查表中行数的查询使用联合:

SELECT name, age
FROM Persons
UNION ALL
SELECT 'no person', 0
FROM DUAL
WHERE (SELECT COUNT(*) FROM Persons) = 0
``` `DUAL` 是一个伪表名,可以在不需要引用实表的查询中使用。
2cmtqfgy

2cmtqfgy4#

为什么需要数据库的这种输出?我认为您应该从处理查询提供的数据所使用的语言开始。我认为建议的解决方案是错误的,因为如果表是空的,它们只给出一个空集

相关问题