Mysql查询结果(N/A)

w1jd8yoj  于 2023-04-10  发布在  Mysql
关注(0)|答案(2)|浏览(493)

目前我有如下记录:

  • 名称|得分|

托尼|23|
约翰|32|
涡流|25|
标记|21|
刻痕|26|
亚历克斯|27|
刻痕|23|
我想请求一个只有如下名称的表:tony,john,eddy,mike,paul使用下面的查询;

SELECT name,
name
FROM a_team
WHERE (name LIKE  'tony%' or name LIKE 'john%' or name LIKE 'eddy%' or name LIKE 'mike%' or name LIKE 'paul%')

结果是:

  • 名称|得分|

托尼|23|
约翰|32|
涡流|25|
因为名字像:mike and paul have no record yet我如何使用上面的查询请求表,结果显示mike and paul =“n/a”in field“score”如下所示?

  • 名称|得分|

托尼|23|
约翰|32|
涡流|25|
麦克风|不适用|
保罗|不适用|
感谢您的回复

f4t66c6m

f4t66c6m1#

不能将标准中的名称传输到输出行集。必须将标准设置为行集,并将现有数据联接到该行集:

SELECT criteria.name, COALESCE(a_team.score, 'N/A') score
FROM (
    SELECT 'tony' AS name UNION ALL
    SELECT 'john' UNION ALL
    SELECT 'eddy' UNION ALL
    SELECT 'mike' UNION ALL
    SELECT 'paul'
    ) criteria
LEFT JOIN a_team ON a_team.name LIKE CONCAT(criteria.name, '%')
juud5qan

juud5qan2#

1-您可以设置列的默认值,因此当字段中没有值时,它将返回数据库中的默认值,例如,如果表名为scores,则可以运行查询;

ALTER TABLE a_team MODIFY COLUMN scores VARCHAR(20) DEFAULT "N/A";

**注意:**整数字段不能设置N/A,所以必须使用varchar()

2-您可以使用IFNULL替换列中的空值:

SELECT name, IFNULL(score, 'N/A') AS score
FROM a_team
WHERE (name LIKE  'tony%' or name LIKE 'john%' or name LIKE 'eddy%' or name LIKE 'mike%' or name LIKE 'paul%')

相关问题