我有一个 MySQL 表,其结构如下:
我正在寻找一个 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/