0

人の名前とそれぞれの国コードを含む SQL テーブルがあります。

----------------
 name    |  code
----------------
saket   |   IN

rohan   |   US

samules |   AR

Geeth   |   CH

Vikash  |   IN

Rahul   |   IN

Ganesh  |   US

Zorro   |   US

私が望んでいたのは、グループの最後の行であっても、そうでない場合でも、名前が最初にcode始まる国ごとに行グループを取得できることでした。saVi

これを試したところ

SELECT * FROM MyTable GROUP BY code HAVING name like 'sa%' or name like 'vi%';

しかし、having 句で上記の条件に一致した行が表示されます。条件が失敗した場合は、そのグループの最後の行、可能ですか?. 可能であれば、どのように?

4

2 に答える 2

0

あまり効率的ではないかもしれませんが、試してみてください:

SELECT FIRST(`name`) AS `name`, `code` FROM (
    SELECT `name`, `code` FROM `MyTable`
        WHERE `name` LIKE 'sa%'
    UNION ALL
    SELECT `name`, `code` FROM `MyTable`
        WHERE `name` LIKE 'vi%'
    UNION ALL
    SELECT LAST(`name`) AS `name`, `code` FROM `MyTable` GROUP BY `code`
        HAVING `name` NOT LIKE 'sa%' AND `name` NOT LIKE `vi%'
) AS `a` GROUP BY `code`
于 2013-10-01T14:18:35.680 に答える