【问题标题】:How to add join based on conditions in mysql如何在mysql中根据条件添加join
【发布时间】:2016-09-28 01:28:23
【问题描述】:

如何根据条件设置连接,我正在尝试使用 if 或 case 来执行此操作,我该如何实现。 mysql 错误代码:1241。操作数应包含 1 列

SET @sUserId = 15;

SELECT userClip.userId
FROM
  ( select if(@sUserId > 0 ,(select * from groups),(select * from otherGroups))folderId)abc
INNER JOIN userClip
on abc.folderId = userClip.folderId

【问题讨论】:

  • 尝试将 IF 放在 SELECT 之前,并使用两个查询(每种情况一个),而不是单个。
  • 如果我在选择之前输入 if 语法错误,你能举个例子吗

标签: mysql stored-procedures subquery inner-join derived-table


【解决方案1】:

您可以将您的条件拆分为两个 LEFT JOINS。这应该有效,因为您的 @sUserId 不能同时是 > 和 userClip 更改为userFolder,因为看起来你把它们弄混了(如果不是,请提供反馈)。

两个 LEFT_JOINS:

SELECT userFolder.userId
FROM
 userFolder 
LEFT JOIN (SELECT * FROM groups) as abc   
on(@sUserId>0 and abc.folderId = userFolder.folderId)
LEFT JOIN (SELECT * FROM otherGroups) as bcd 
on(@sUserId>=0 and bcd.folderId = userFolder.folderId)

【讨论】:

  • 会尝试让您知道
猜你喜欢
  • 2016-04-14
  • 1970-01-01
  • 2022-01-16
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多