[英]MySQL select with INNER JOIN and CASE WHEN in INNER JOIN
我有一個字符數據庫。 由於不僅要使用字符名稱,還必須將名稱與字符分開。 由於存在Male
和Female
角色,因此將它們保留在不同的表中:
tbl_player,tbl_maleName,tbl_femaleName
在我的MySQL Select
查詢中,我想根據其性別選擇帶有INNER JOIN
的正確表。 所以是這樣的:(SQL查詢是錯誤的,不起作用:()
SELECT tbl_player.id,
(CASE tbl_player.gender
WHEN 'm' THEN tbl_maleName.name
WHEN 'f' THEN tbl_femaleName.name
END) as gamerName
, tbl_player.gender
FROM tbl_player
INNER JOIN
(CASE tbl_player.gender
WHEN 'm' THEN tbl_maleName ON tbl_player.gamerName = tbl_maleName.id
WHEN 'f' THEN tbl_femaleName ON tbl_player.gamerName = tbl_femaleName.id
END)
提前致謝!
為什么您選擇使用2個表作為我不確定的名稱,但我不建議這樣做。
但是,請嘗試以下操作:
SELECT
tbl_player.id
, (CASE tbl_player.gender WHEN 'm' THEN tbl_maleName.name WHEN 'f' THEN tbl_femaleName.name END) AS gamerName
, tbl_player.gender
FROM tbl_player
LEFT JOIN tbl_maleName ON tbl_player.gamerName = tbl_maleName.id
AND tbl_player.gender = 'm'
LEFT JOIN tbl_femaleName ON tbl_player.gamerName = tbl_femaleName.id
AND tbl_player.gender = 'f'
您需要使用Union並創建一個值為tableOption的默認值:
SELECT tbl_player.id FROM tbl_player LEFT JOIN
(
(SELECT 'male' as tableOption, name FROM tbl_maleName)
UNION
(SELECT 'female' as tableOption, name FROM tbl_femaleName)
) as gamerName
ON gamerName.this = tbl_player.that
WHERE gamerName.tableOption = 'female'
如果值為女性,則將選擇第二個表的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.