MySQL根据字段内容连接

标签 mysql

我有一个 MySQL 表,其结构如下:

MySQL fields

我正在寻找一个 select 语句,它将连接最后四个字段,如下所示:

ID    Source
1     Search engine
2     Email
3     Coupon mailout
4     Relative of owner

我可以想出一种方法来做到这一点,即使用子查询根据类型选择要连接的相关字段,嵌套子查询选择非 NULL 或“其他”的值,然后是 JOIN、CONCAT() 和 a UNION,但这似乎是解决问题的一种非常复杂的方法。

我是不是想太多了?有没有更简单的方法?

最佳答案

如果您无法修复数据,您可以简单地使用 IF()功能。在我的示例中,我使用简单的列名称来使其更清晰:

mysql> SELECT IF(c1 IS NOT NULL AND c1 != 'Other', c1,
        IF(c2 IS NOT NULL AND c2 != 'Other', c2,
        IF(c3 IS NOT NULL AND c3 != 'Other', c3, c4))) FROM t1;

以上内容已经过测试。

如果您需要经常使用它,您可以用它制作一个存储函数。

但是,如果可以的话,修复表结构吗?

关于MySQL根据字段内容连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226054/

相关文章:

php - mssql_rows_affected 返回错误的行数

MySQL - SQL 跳过间隔,例如每5分钟记录一次

php - mySql 中的 DAYS 数据类型

java - 对 MySQL 的间歇性 java 慢查询

mysql - 使用 SQL/Access 创建类似表数据透视的输出

php - 从多个表中查询FetchArrayAll?

mysql - MAMP 未连接到本地主机

mysql - 删除具有重复字段值的行

MySQL 3 个表的多重连接

MySql 索引和约束