在我的表格中,我存储了所有者的信息。所有者可以有姓名或国家或两者兼有。
我必须查询数据库,该数据库检查名称是否存在,然后取名或其他国籍。
目前我正在使用以下查询:
SELECT id,name,nationality FROM owners
没关系,但我想在单一栏目下填写姓名或国籍。
答案 0 :(得分:4)
您称之为“自定义列”的一般语法是*expression* AS *column_name*
。例如,1 AS one
将为您提供一个名为“one”的列,其值始终为整数“1”。您需要做的是创建一个计算结果为name
或nationality
的表达式,并为该表达式赋予列名。
假设您将空名称存储为NULL
,您可以使用:
SELECT id, COALESCE(name, nationality) AS name_or_nationality FROM owners
如果空名称存储为空字符串,则需要使用其他构造:
SELECT id, CASE WHEN name THEN name ELSE nationality END AS name_or_nationality FROM owners
SELECT id, IF(name, name, nationality) AS name_or_nationality FROM owners
答案 1 :(得分:1)
您可以在查询中使用简单的if /else
条件。
如下所示:
SELECT id,if(name='',nationality,name) as ownerinfo FROM owners
答案 2 :(得分:0)
如果name为null,则此SQL select语句将返回一个值:
SELECT id,
case when ifnull(name,'') = ''
then nationality
else name
end as name_equiv
FROM owners;
答案 3 :(得分:0)
假设您的值设置为NULL而不只是空白:
SELECT IF(name IS NULL, nationality, name) AS name_or_nationality FROM owners
有关MySQL中条件语句的解释: http://timmurphy.org/2009/08/13/inline-if-and-case-statements-in-mysql/