[英]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.