使用多个where子句按单列排序

时间:2014-05-30 15:58:07

标签: mysql

这是一个难以理解如何正确询问的问题,但这里有......

这是我的表的基本格式(实际表有很多行和多个lang_id):

----------------------------------
| id | lang_id | key    | text   |
----------------------------------
| 1  |    1    | k_foo  | foo    |
----------------------------------
| 2  |    1    | k_bar  |  bar   |
----------------------------------
| 3  |    2    | k_bar  | le bar |
----------------------------------
| 4  |    2    | k_foo  | le foo |
----------------------------------

我想要做的是返回WHERE lang_id = 2行,但按WHERE lang_id = 1的结果排序,如下所示:

----------------------------------
| id | lang_id | key    | text   |
----------------------------------
| 4  |    2    | k_foo  | le foo |
----------------------------------
| 3  |    2    | k_bar  | le bar |
----------------------------------

我正在疯狂地试图解决这个问题。我已搜索了几个小时,但不断获得多列排序的结果,而不是单列的多个结果。

我已尝试加入它,联合它和子查询,但我要么返回数百行,要么就是没有!

1 个答案:

答案 0 :(得分:0)

SELECT
    l2.id,
    l2.lang_id,
    l2.key,
    l2.text
FROM
    language l1
JOIN
    language l2
    ON l2.key = l1.key

WHERE
    l1.lang_id = 1
    AND
    l2.lang_id = 2
ORDER BY
    l1.id -- Replace with whatever column you actually want to order by.