我的输入表如下
表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
请告知。
答案 0 :(得分:0)
此查询将执行您想要的操作。 JOIN
两次a
至b
,一次查找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