这是我的表:
id | title | lang
----+----------+------
1 | Moscow | en
1 | Москва | ru
2 | Helsinki | en
2 | Хельсинки| ru
我希望通过ru
标题有效地获得en
标题。
目前,我首先获得条目的id
,然后手动进行另一个查询。
还有其他更优雅的解决方案吗?
答案 0 :(得分:4)
SELF JOIN
可能会有所帮助,对于许多嵌套查询而言通常是一个更好的解决方案,如果出于性能原因(请参阅:Join vs. sub-query,Rewriting Subqueries as Joins)肯定是为了提高可读性。< / p>
在你的情况下试试:
SELECT movies_ru.title
FROM movies AS movies_ru
JOIN movies AS movies_en
ON movies_ru.id = movies_en.id
WHERE movies_ru.lang = "ru"
AND movies_en.lang = "en"
AND movies_en.title = "The English Title"
答案 1 :(得分:1)
编辑:事实证明Tobia Tesan's answer通常是更好的做法。
使用subselect:
SELECT `title` FROM `table` WHERE `lang` = 'ru' AND `id` = (SELECT `id` FROM `table` WHERE `lang` = 'en' AND `title` = 'Moscow')
答案 2 :(得分:-1)
SELECT title FROM Table WHERE lang='ru' AND id = (Your select id query)
答案 3 :(得分:-1)
你可以通过这个简单的查询来做到这一点: -
SELECT title FROM table
WHERE lang = 'ru'
AND
id = (SELECT id FROM table WHERE lang = 'en' AND title = 'Moscow')