因此,我有一个翻译表,其中包含地名的各种表示形式。我加入此表的placeId
,这张表作为右侧(左侧包含有关place
的信息)。将右表的多条记录过滤为左表的1条记录
但是,加入placeId会导致更多翻译,请参阅下表。 preferredName/shortName/historicName的内容全部为0或1.没有规则,但每个翻译应该至少有1条记录,其中包含preferredName=1
。
所以我最终得到的是:我怎么可以只选择这些翻译1,具体为:
- 如果纪录
preferredName=1
存在:使用此 - 否则,如果纪录
shortName=1
存在:使用这 - 否则,如果既不是真实的(所以无论是0),然后选择该记录
。
+---------------+---------+------------------+---------------+-----------+--------------+
| translationId | placeId | alternateName | preferredName | shortName | historicName |
+---------------+---------+------------------+---------------+-----------+--------------+
| 4832 | 554 | 'New York' | 1 | 0 | 0 |
| 4833 | 554 | 'NY' | 0 | 1 | 0 |
| 4834 | 554 | 'New York City' | 0 | 0 | 0 |
+---------------+---------+------------------+---------------+-----------+--------------+
任何线索?基本上归结为将右表上的多个匹配过滤到左表的1条记录。
排序“preferredName”和“ ShortName“,然后选择第一个结果;) –
当你将10个位置匹配到这些翻译时,你将如何做到这一点;我想在这种情况下返回10条记录(每条记录都有相应的翻译作为字段) – Flame
您可以在子请求中选择'select ... from ... order by ...',也许'limit 1 ' –