如何根据具有相同`id`的另一行有效地选择列的字段?

时间:2015-07-27 08:39:15

标签: mysql sql

这是我的表:

 id | title    | lang
----+----------+------
 1  | Moscow   | en
 1  | Москва   | ru
 2  | Helsinki | en 
 2  | Хельсинки| ru

我希望通过ru标题有效地获得en标题。

目前,我首先获得条目的id,然后手动进行另一个查询。

还有其他更优雅的解决方案吗?

4 个答案:

答案 0 :(得分:4)

SELF JOIN可能会有所帮助,对于许多嵌套查询而言通常是一个更好的解决方案,如果出于性能原因(请参阅:Join vs. sub-queryRewriting 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')