我有一个名为 basicInfo 的表,其中包含有关用户的基本信息(例如其性别)。
然后我创建了两个名为 userMan 和 userWoman 的表。
使用 basicInfo 中的“性别”值,我想从 userMan 或 userWoman 检索信息。
例如
SELECT
IF(user.gender='male', (man.height, man.location), (woman.height, woman.location)
FROM
basicInfo AS user
LEFT JOIN userMan AS man ON user.id=man.id
LEFT JOIN userWoman AS woman ON user.id=woman.id;
或者
SELECT
CASE WHEN user.gender='male'
THEN man.height, man.location
ELSE woman.height, woman.location
END
FROM
basicInfo AS user
LEFT JOIN userMan AS man ON user.id=man.id
LEFT JOIN userWoman AS woman ON user.id=woman.id;
我有大约 17 个值可以放入 IF 或 CASE 语句中。我必须为每 17 个值使用“user.gender='male'”。
我考虑过使用 UNION ALL。但是,我想从 userman 和 userwoman 检索的列是不同的。
有没有比对每一列使用“user.gender='male'”更好的方法?