我有一个MySQL表,结构如下:
我正在寻找一个select语句,它将连接最后四个字段,如下所示:
ID Source
1 Search engine
2 Email
3 Coupon mailout
4 Relative of owner
我可以想办法通过使用子查询来选择相关字段来连接基于Type,嵌套子查询来选择非NULL或'Other'的值,然后是JOIN,CONCAT()和a UNION,但这似乎是解决问题的一个非常复杂的方法。
我是否过度思考这个?有更简单的方法吗?
答案 0 :(得分:1)
如果无法修复数据,只需使用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;
以上测试过。
如果您需要经常使用它,可以使用它来制作存储函数。
但是,如果可以,修复表结构?
答案 1 :(得分:0)