以下是一个名为pages
id page_name page_alias lang
1 pagina1 pagina1 es
2 pagina2 pagina2 es
3 page1 pagina1 en
4 page2 pagina2 en
我知道page_name
= pagina1
,来源lang
= es
和目的地lang
= en
因此,基于page_name和source lang,我需要获取此条目以及另一个目标为lang的条目,其中别名与第一个结果相同
我试过这个但不行(只获得第一个条目)
SELECT A.* FROM pages AS A
JOIN pages AS B
ON
B.page_alias = A.page_alias AND B.lang = 'en'
WHERE A.page_name = 'pagina1' AND A.lang = 'es'
预期查询结果(两行):
1 pagina1 pagina1 es
3 page1 pagina1 en
它需要一个UNION,但我不知道如何将第一个查询中的page_alias用于UNION查询
答案 0 :(得分:3)
使用IN
运算符:
select *
from pages
where page_alias in (
select page_alias
from pages
where page_name = 'pagina1' and lang = 'es'
)
and lang in ('en', 'es')
答案 1 :(得分:1)
如果您搜索的列是EN上的ES,为什么需要使用UNION。改为使用IN子句。
这是一个演示:http://sqlfiddle.com/#!9/15afd1/8
SELECT DISTINCT A.*
FROM pages AS A
JOIN pages AS B
ON B.page_alias = A.page_alias
AND B.page_name = 'pagina1'
WHERE A.lang in ('es', 'en')