繁体   English   中英

带CASE的MySQL行子查询(多列)(不在子句中)

[英]MySQL row subquery (multiple columns) with CASE (not in where-clause)

我想要从同一个表中的两列 ,但只有在当前行中某列未设置。 仅需检索一列,就没有问题。 一旦我需要另一列,看来我需要另一个带有子句的子查询,但这似乎是无效的。 我以前从未使用过Joins,但是我认为case子句可能真的很复杂吗?

我认为它的好处是实际上它只在需要的少数情况下执行(据我所知)浪费的子查询。

在文档中,我发现使用ROW()进行比较显然是可能的。 是否有使用AS检索列的等效项?

感谢您提供的任何提示,如果它仅适用于Joins,请向我提供正确的方向,因为它们似乎有点复杂,如果使用case子句,那么如果我继续前进的话,可能会一团糟。

鲁本

SELECT id, bekannt, (

CASE WHEN bekannt =  ''
    THEN (
        SELECT bekannt
        FROM vokabeln AS v2
        WHERE v2.id = vokabeln.hinweis
        LIMIT 1
    )
    ELSE NULL 
    END
) AS lueckentext, (

CASE WHEN bekannt =  ''
    THEN (
        SELECT hinweis
        FROM vokabeln AS v2
        WHERE v2.id = vokabeln.hinweis
        LIMIT 1
    )
    ELSE NULL 
    END
) AS lthinweis
FROM vokabeln
WHERE nutzer =  'test'

我将其编码为:

  SELECT
    v1.id, v1.bekannt, v2.bekannt AS lueckentext, v2.hinweis AS lthinweis
  FROM 
    vokabeln AS v1
    LEFT OUTER JOIN vokabeln AS v2
    ON (v1.bekannt='' AND v2.id = v1.hinweis)
  WHERE
    v1.nutzer='test'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM