MYSQL-要从第二个表中选择有条件的行

时间:2018-08-10 23:23:44

标签: mysql mysqli mysql-workbench

我的输入表如下

表a:

from sqlalchemy import create_engine


engine = create_engine('sqlite:////Users/Desktop/practice/database.db')
db = SQLAlchemy(engine)


class newsPosts(db.Model):

    newsSite = db.Column(db.String(128), nullable=False)
    title = db.Column(db.String(128), nullable=False)
    date = db.Column(db.String(128), nullable=False)
    url = db.Column(db.String(128), nullable=True)


def main():
    print("hello world")


if __name__ == '__main__':
    main()

在表B中,queuenum列将为100或200。 首先,我需要从表“ A”中选择“ id”,并检查100和200行相同的randomnum,并获取对应的200的中间值。

我的意思是说,从上面的'id''12345'开始,随机数CCCCCC和DDDDD分别为100和200。现在,我需要获取ee或ff(仅一个)。因此,最终输出应为输入表+中间列(值为200,该ID中的随机数在100中)。

id      name    state 
12345   john    az
45678   henry   AL
11111   jack    PA
22222   brian   TL

table b :

id  queuenum    randomnum   mid
12345   100      AAAAA      aa
12345   100      BBBBB      bb
12345   100      CCCCCC     cc
12345   100      DDDDD      dd
12345   200      CCCCCC     ee
12345   200       DDDDD     ff
12345   200      EEEEE      gg
12345   200      FFFFF     hh
45678   100      a1a2a3 ii
45678   100      b1b2b3 jj
45678   200      a1a2a3 ll
45678   200      b1b2b3 mm
45678   200      E1E2E3 nn

请告知。

1 个答案:

答案 0 :(得分:0)

此查询将执行您想要的操作。 JOIN两次ab,一次查找randomnum值为100的queuenum值,然后再次查找其中{前randomnum中的{1}}对应的JOIN为200。然后queuenum a.id选择一个随机值GROUP BY进行输出。

mid

输出:

SELECT a.id, a.name, a.state, b1.mid 
FROM a
JOIN b ON b.id = a.id AND b.queuenum = 100
JOIN b b1 ON b1.id = a.id AND b1.randomnum = b.randomnum AND b1.queuenum = 200
GROUP BY a.id

SQLFiddle