我正在使用mysql和一个名为 students
. 我试图添加一个列,指出一个学生是来自美国、欧洲、南美洲,还是不是这些国家。具体来说,如果这些都不是真的,我想在列中加0,如果是美国,我想加1,如果是欧洲,我想加2,如果是南美,我想加3。
所以我在做这样的事情:
SELECT name,
CASE WHEN ...
FROM original_table or
LEFT JOIN us_table us
ON or.student_id = us.student_id
LEFT JOIN europe_table eur
ON or.student_id = eur.student_id
LEFT JOIN south_america_table sa
ON or.student_id = sa.student_id
我的电脑有问题 CASE WHEN
部分。我可以说“当 id
us表中的列不为null,其他 id
列(来自欧洲和南美)为空,记录为1。
同样,如果 id
欧洲表的列不为空,美国和南美表的列不为空 id
列为空,记录为2。
有更好的办法吗?
2条答案
按热度按时间pcrecxhr1#
我认为你的数据结构很糟糕。一般来说,将等价信息(如地理信息)拆分到不同的表中并不是一个好的数据模型。
我只想用
exists
:我还将表别名更改为
ot
从or
,因为or
是一个保留字。g6ll5ycj2#
测试每个
NULL
似乎是最好的办法。使用ELSE
对于0
价值观。