首页 > 解决方案 > SQL OR 返回两个表达式

问题描述

我有一个存储的 SQL 过程,我想根据 COALESCE 或 OR 的结果加入另一个表,但不知何故,它似​​乎在返回两个表达式。

用例:如果播放列表不存在时间表 -> 返回默认时间表 (24/7)。这就像一个魅力,我得到了 ID 1 的时间表。但如果有一个时间表,程序会返回两个时间表。:-(

这是我的代码:

...
RIGHT JOIN schedule
ON COALESCE(playlists.ID = schedule.PLID,playlists.SCHEDULES_ID=1)
WHERE devices.IDENTIFIER = ParamID;

有什么建议么?

提前谢谢!

彼得

更新

似乎合并不是我的情况的正确解决方案。有人有建议吗?

我有一个表“时间表”,其中有一列“PLID”(PlaylistID)。在我的查询中,我想根据这个值加入这个表。如果没有匹配 PLID 的时间表,我想加入默认时间表(ID = 1)。

更新 2

我现在正在尝试一种新方法,但似乎仍然不起作用。如果没有时间表,我会得到默认时间表(ID1)。如果有时间表->我得到默认+实际分配的时间表(PLID = playlists.ID)

LEFT JOIN schedule
ON (schedule.PLID=playlists.ID) 
OR (schedule.ID = '1')

标签: mysqlmariadb

解决方案


我想你想要这个逻辑:

...
RIGHT JOIN schedule
    ON playlists.ID = schedule.PLID OR
       playlists.SCHEDULES_ID = 1
WHERE devices.IDENTIFIER = ParamID;

如果 ID 相等,或者如果播放列表的时间表 ID 为 1,则这将进行加入。


推荐阅读