下面是一个名为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
因此,基于页面名称和源语言,我需要得到这个条目和另一个带有目标语言的条目,其中别名与第一个结果相同
我试过了,但没有成功(只得到第一个条目)
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

它需要一个联合,但我不知道如何使用从第一个查询到联合查询的页面别名

最佳答案

使用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')

SqlFiddle.

09-25 18:32