我有两张桌子
table_1 table_2
id q_id content id w_id q_id c_id ranking
---------------------- ---------------------------------------
95 2046 1=E 123 22404 2046 100 0
96 2046 2=G 124 22404 2046 101 1
97 2046 3=N 125 22404 2046 102 1
98 2046 4=B 126 22404 2046 103 1
99 2046 5=V 127 22404 2046 104 2
100 2046 A1 128 22404 2046 105 2
101 2046 A2 129 22505 2046 A1 0
102 2046 A3 130 22505 2046 A2 2
103 2046 A4 131 22505 2046 A3 1
104 2046 A5 132 22505 2046 A4 2
105 2046 A6 133 22505 2046 A5 3
106 2046 A7 134 22505 2046 A6 3
107 2046 A8 135 22505 2046 A7 0
108 2046 A9 136 22505 2046 A8 0
109 2046 A10 137 22505 2046 A9 0
--------------------- 138 22505 2046 A10 0
我需要将表格加入这种格式:
id q_id content w_id c_id ranking
-------------------------------------------------------
100 2046 A1 22404 100 0
101 2046 A2 22404 101 1
102 2046 A3 22404 102 1
103 2046 A4 22404 103 1
104 2046 A5 22404 104 2
105 2046 A6 22404 105 2
106 2046 A7 22505 A7 0
107 2046 A8 22505 A8 0
108 2046 A9 22505 A9 0
109 2046 A10 22505 A10 0
我的代码如下
SELECT *
FROM table_1 t1
JOIN table_2 t2 ON t2.c_id in (t1.id, t1.content)
WHERE t1.q_id = 2046 AND
t2.q_id = 2046 AND
t2.ranking >= 0 AND
t2.w_id IN (22404, 22505)
GROUP BY t1.id
也许我的数据库中存在一些冲突,因此结果并非全部正确.A7-A10的行是错误的。
我的结果是:
id q_id content w_id c_id ranking
-------------------------------------------------------
100 2046 A1 22404 100 0
101 2046 A2 22404 101 1
102 2046 A3 22404 102 1
103 2046 A4 22404 103 1
104 2046 A5 22404 104 2
105 2046 A6 22404 105 2
106 2046 A7 22505 A1 1
106 2046 A8 22505 A1 1
106 2046 A9 22505 A1 1
106 2046 A10 22505 A1 1
任何人都可以教我如何解决它并给我建议吗?
答案 0 :(得分:2)
尝试以下:
SELECT t1.id,t1.q_id,t1.content,t2.w_id,t2.c_id,t2.ranking
FROM table_1 t1
JOIN table_2 t2 ON t2.c_id = t1.id OR t2.c_id = t1.content
WHERE t1.q_id = 2046 AND
t2.q_id = 2046 AND
t2.ranking >= 0 AND
t2.w_id IN (22404, 22505)
GROUP BY t1.id