因此,我有一個翻譯表,其中包含地名的各種表示形式。我加入此表的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 ' –