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