例如:
我们有一个表Person
,其中有列Name, Age
。
如果表Person
为空,我想在"no person"
列中将默认值设置为Name
,在0
列中将默认值设置为age
。
我们该怎么做?
我尝试了IFNULL
,但没有提供任何默认值。该表仅显示为空。
答案 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中没有记录,则该查询将排成一行