如果表中没有数据,如何为表中的列赋予默认值?

时间:2018-12-05 17:32:29

标签: mysql sql

例如: 我们有一个表Person,其中有列Name, Age

如果表Person为空,我想在"no person"列中将默认值设置为Name,在0列中将默认值设置为age

我们该怎么做?

我尝试了IFNULL,但没有提供任何默认值。该表仅显示为空。

4 个答案:

答案 0 :(得分:1)

将联合与查询一起使用以检查表中的行数:

SELECT name, age
FROM Persons
UNION ALL
SELECT 'no person', 0
FROM DUAL
WHERE (SELECT COUNT(*) FROM Persons) = 0

DUAL是一个虚拟表名,可用于不需要引用真实表的查询中。

答案 1 :(得分:0)

使用mat-button

<mat-form-field>
  <input matInput type="text" placeholder="Search">
  <button mat-button matPrefix mat-icon-button>
    <mat-icon>search</mat-icon>
  </button>
</mat-form-field>


<mat-form-field>
  <input matInput type="text" placeholder="Clearable input">
  <button mat-button *ngIf="value" matSuffix mat-icon-button>
    <mat-icon>close</mat-icon>
  </button>
</mat-form-field>

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您不会在数据库中执行此操作,而会在前端进行操作。

如果您绝对坚持要求数据库应提供此数据,则可能会出现如下查询:

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中没有记录,则该查询将排成一行