如何从表中获取列表中的几行升序

时间:2016-02-01 10:13:32

标签: mysql grails gorm

我是Grails的新手,我有一个问题。

我有三个表table1,table2,table3。我试图从table1显示emailIds。首先以tableI的升序显示table1中的行,这些行映射到table3中,然后按照emailIds的升序显示table3中不存在于table3中的剩余行。

这是表结构:

table1列

    id
    emailId
    user

table2列

    id
    aliasemailId

table3列

    table1id -> foreign key table1 id
    table2id -> foreign key table2 id

table1行

        id    emailId         user
        ----- --------------  ------
        1     s_user@xyz.com  user1
        2     w_user@xyz.com  user2
        3     a_user@xyz.com  user3
        4     v_user@xyz.com  user4
        5     x_user@xyz.com  user5
        6     e_user@xyz.com  user6
        7     g_user@xyz.com  user7
        8     k_user@xyz.com  user8
        9     l_user@xyz.com  user9
        10    t_user@xyz.com  user10

table2行

        id    aliasemailId
        ----- -----------------
        1     alias1@xyz.com
        2     alias2@xyz.com
        3     alias3@xyz.com

table3行

        table2id table1id
        -------- ----------
        1        10
        1        3
        1        7
        2        10
        3        4

我希望以下列格式获取emailIds列表。

  1. 使用table3" table2id按升序列出table1中的所有emailIds。

  2. 按升序列出table1中的所有emailIds。从步骤1中排除ID。

  3. 结果的最终输出应如下所示:for table2id - 1,不包括表1中的id 1

            id    emailId         user
            ----- --------------  ------
            3     a_user@xyz.com  user3 (from table 3)
            7     g_user@xyz.com  user7 (from table 3)
            10    t_user@xyz.com  user10 (from table 3)
            6     e_user@xyz.com  user6 (from table 1)
            8     k_user@xyz.com  user8 (from table 1)
            9     l_user@xyz.com  user9 (from table 1)
            1     s_user@xyz.com  user1 (from table 1)
            4     v_user@xyz.com  user4 (from table 1)
            2     w_user@xyz.com  user2 (from table 1)
            5     x_user@xyz.com  user5 (from table 1)
    

    我想知道是否有办法使用条件构建器实现此目的。请让我知道如何显示它。

    感谢任何帮助。

    更新

    有没有办法为会话创建临时表。这样数据就可以插入到临时表中,并在会话结束后消失临时表。

    更新2:

    我尝试使用以下MySQL查询:它给出了值,但结果不正确。

     (Select * from table1 where id in (SELECT table1id FROM table2 where table2id=1) order by emailid) union distinct (select * from table1 order by emailid) limit 30 offset 0
    

0 个答案:

没有答案