首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于第一表列与第二表连接

基于第一表列与第二表连接
EN

Stack Overflow用户
提问于 2013-02-14 14:28:13
回答 2查看 80关注 0票数 0

嗨,我想把我的registry_ug表和第二个基于registry_ug.type的表连接起来.我想避免不必要的加入。

这是我的密码

代码语言:javascript
复制
   SELECT  ug.id , tbl.id FROM registry_ug ug
      JOIN    CASE ug.type 
             WHEN 1   THEN  users 
             WHEN 2   THEN  group_software 
       END
       AS  tbl
       ON 
       ug.id = tbl.id 

     WHERE ug.id = $uid

对我来说似乎没问题,但我明白这个错误。

代码语言:javascript
复制
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE ug.type WHEN 1 THEN users WHEN 2 THEN g' at line 2

SELECT ug.id , tbl.id FROM registry_ug ug JOIN CASE ug.type WHEN 1 THEN users WHEN 2 THEN group_software END AS tbl ON ug.id = tbl.id WHERE ug.id = 55 

*我不想加入到所有可能的第二桌*

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-14 14:30:16

你不能这样做。您不能以这种方式使用CASE表达式。试一试:

代码语言:javascript
复制
SELECT  
  ug.id, 
  COALESCE(u.id, g.id)
FROM registry_ug AS ug
LEFT JOIN users          AS u ON ug.id = u.id AND ug.type = 1
LEFT JOIN group_software AS g ON ug.id = g.id AND ug.type = 2
WHERE ug.id = $uid
票数 1
EN

Stack Overflow用户

发布于 2013-02-14 14:31:02

试试看,

代码语言:javascript
复制
SELECT  ug.id , 
        CASE WHEN ug.type = 1 
            THEN b.id 
            ELSE c.id
        END newID
FROM    registry_ug ug
        LEFT JOIN   users b
            ON ug.id = b.id 
        LEFT JOIN   group_software c
            ON ug.id = c.id 
WHERE   ug.id = $uid

无法测试,没有添加样本数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14877022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档