Mysql SQL-where子句只匹配一个条件

Mysql SQL-where子句只匹配一个条件,mysql,sql,select,Mysql,Sql,Select,我需要帮助写一个查询。使用此模式作为示例: Table: A id 1 id 2 Table: ALocalized A_id 1, culture 1, name 'EN translation' A_id 1, culture 2, name 'PT translation' A_id 2, culture 1, name 'EN translation' 这是我用来本地化信息的模式。A上的每条记录在上至少有一条相关记录已本地化,但某些行可能没有特定区域性的本地化记录 在本例中,我想查询

我需要帮助写一个查询。使用此模式作为示例:

Table: A
id 1
id 2

Table: ALocalized
A_id 1, culture 1, name 'EN translation'
A_id 1, culture 2, name 'PT translation'
A_id 2, culture 1, name 'EN translation'
这是我用来本地化信息的模式。A上的每条记录在上至少有一条相关记录已本地化,但某些行可能没有特定区域性的本地化记录

在本例中,我想查询A,并根据区域性2过滤本地化的。如果区域性2不存在,则返回任何其他可用的。 结果应该是:

A_id 1, culture 2, name 'PT translation'
A_id 2, culture 1, name 'EN translation'
我曾尝试使用子查询连接两个表,但我认为我的问题在于where子句

where (ALocalized.culture = @cultureparameter OR ALocalized.culture = 1 OR ALocalized.culture = 2) limit 1
当@cultureparameter为2时,返回区域性1。它不尊重where子句的顺序

我该怎么做?我试图避免使用循环来检查每个A记录是否存在本地化的

提前谢谢

SELECT  a.*,
        COALESCE(b.culture, c.culture) Culture,
        COALESCE(b.Name, c.Name) Name
FROM    tableA a
        LEFT JOIN   tableB b
            ON a.id = b.a_id AND
                b.culture = 2
        LEFT JOIN   tableB c
            ON a.id = c.a_id AND
                c.culture = 1

查找mysql等效od SQL Server的coalesce函数幸运的是,mysql确实有coalesce:)查找mysql等效od SQL Server的coalesce函数幸运的是,mysql确实有coalesce:)根据您的回答,我为每个区域性使用了一个案例来更改合并顺序。谢谢基于你的回答,我已经为每种文化使用了一个案例来更改合并的顺序。谢谢