2

我在下面有 mysql 查询。但它不起作用。

SELECT  CASE
        WHEN isLevel = '1' THEN 'Mahasiswa'
        WHEN isLevel = '2' THEN 'Dosen'
        WHEN isLevel = '3' THEN 'Karyawan'
        ELSE 'Admin'
        END as level 
FROM mhs LEFT JOIN if(isLevel=1,'mahasiswa','dosen') ON username=iduser 
WHERE blabala.

if "isLevel=1" 我想将 mhs 与 mahasiswa 表连接,如果 "isLevel=2" 将 mhs 与 dosen 表连接,... 我应该如何编写查询?

请帮我。谢谢。

4

2 回答 2

1

你不能有条件地加入。但是使用 2 个左连接来获取两个表

Select  CASE
    WHEN isLevel = '1' THEN 'Mahasiswa'
    WHEN isLevel = '2' THEN 'Dosen'
    WHEN isLevel = '3' THEN 'Karyawan'
ELSE 'Admin'
END as level 
from mhs 
left join mahasiswa m on m.username=iduser
left join dosen d on d.username=iduser
于 2013-09-30T09:55:11.793 回答
1

您可以在这里使用联合声明:

SELECT 'Mahasiswa' AS level
FROM mhs, mahasiswa

WHERE isLevel = 1
AND username = iduser

UNION ALL

SELECT CASE WHEN isLevel = 2 THEN 'Dosen' 
            WHEN isLevel = 3 THEN 'Karyawan' ELSE 'Admin' END AS level
FROM mhs, dosen

WHERE isLevel != 1
AND username = iduser;

尽管这似乎是一种困难的方法。从长远来看,您可能最好将 isLevel 列的翻译放到另一个表中,这样您就可以重用。除非你真的很喜欢写 CASE 语句。

于 2013-09-30T10:05:03.980 回答