如何在MySQL中显示一列或另一列

时间:2012-04-16 06:15:12

标签: php mysql

在我的表格中,我存储了所有者的信息。所有者可以有姓名或国家或两者兼有。

我必须查询数据库,该数据库检查名称是否存在,然后取名或其他国籍。

目前我正在使用以下查询:

SELECT id,name,nationality FROM owners 

没关系,但我想在单一栏目下填写姓名或国籍。

4 个答案:

答案 0 :(得分:4)

您称之为“自定义列”的一般语法是*expression* AS *column_name*。例如,1 AS one将为您提供一个名为“one”的列,其值始终为整数“1”。您需要做的是创建一个计算结果为namenationality的表达式,并为该表达式赋予列名。

假设您将空名称存储为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/