mysql-使用条件从第二个表中选择行

jaql4c8m  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(307)

我有一个输入表如下
表a:

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

在表b中,queuenum列将具有100或200。首先,我需要从表'a'中选择'id',并为100和200行选择相同的randomnum,然后得到相应200行的中间值。
我的意思是说,从上面说,id“12345”在100和200中有randomnum cccc和ddddd。现在我需要得到要么ee或ff(只有一个)。所以最终的输出应该是input table+mid column(值为200时,该id的randomnum等于100)。

ID     name     state      mid
12345   JOHN    AZ        ee/ff (ONLY ONE)
45678   henry   AL        ll/mm (ONLY ONE)

请告知。

ljsrvy3e

ljsrvy3e1#

此查询将执行您想要的操作。它 JOIN s ab 两次,一次找到 randomnum 具有 queuenum 值为100,然后再次查找 randomnum 从一开始 JOIN 有相应的 queuenum 200个。这个 GROUP BY a、 id然后选择一个随机值 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

输出:

id      name    state   mid
12345   john    az      ee
45678   henry   AL      ll

sqlfiddle公司

相关问题