由於您沒有別名,因此您的查詢很難遵循。我假設它的結構是這樣的:
select a.one. b.two
from tableA a left join
tableb b
on a.id = b.id
where b.language = 'de'
order by xyz
以下規定,應該在MySQL的邏輯:
SELECT a.one,
(case when (select COUNT(*) from b where b.id = a.id and b.language = 'de' and b.two is null) = 0
then bde.two
else bend.two
end) as two
FROM tableA A LEFT JOIN
tableB Bde
ON (A.id=B.id) and
bde.language='de' left join
tableB ben
on ben.language = 'en'
order by xyz
這是假設NULL
值存儲在B表。如果是通過一個連接丟失,那麼它是一個有點困難,有點像:
SELECT a.one,
(case when (select COUNT(*) from a a2 join b b2 on a2.id = b2.id and b2.language = 'de' and b2.two is null) = 0
then bde.two
else bend.two
end) as two
FROM tableA A LEFT JOIN
tableB Bde
ON (A.id=B.id) and
bde.language='de' left join
tableB ben
on ben.language = 'en'
order by xyz
我不知道MySQL的具體,但它有一個@@ ROWCOUNT功能? – iGanja 2013-04-25 16:21:02