我有这样一个查询:子查询是根据案例选择对不同的表进行的。
SELECT
ID,
UNID,
IDMENU,
IDTYPE, ( CASE WHEN `IDMENU` = 1 THEN
(
SELECT
tableB.DESCRIPTION
FROM
tableB
WHERE
tableB.ID = tableA.ID
AND tableB.IDMENU = tableA.IDMENU
AND tableB.IDTYPE = tableA.IDTYPE)
WHEN `IDMENU` = 2 THEN
(
SELECT
tableC.DESCRIPTION
FROM
tableC
WHERE
tableC.ID = tableA.ID
AND tableC.IDMENU = tableA.IDMENU
AND tableC.IDTYPE = tableA.IDTYPE)
END) AS DESCRIPTION
FROM
tableA
这个能再紧凑点吗?是否可以将大小写保存到变量中,然后将该变量用作表名?我应该使用程序吗?
2条答案
按热度按时间3gtaxfhh1#
您可以在下面的查询中使用case
wnavrhmk2#
您可以使用
Left Join
相反。Left Join
将确保主(最左边)表中的所有行都显示出来。