如何获取表A和表B中的记录?

时间:2019-10-28 06:52:04

标签: php mysql join

此主题已关闭。 我找到了一个使用子查询显示所需输出的答案。

选择 table_a.id, table_a.col作为col, (从table_b WHERE col1 = col AND col3 ='me'LIMIT 1中选择col2)作为table_b_col2, (从table_b WHERE col1 = col AND col3 ='me'LIMIT 1中选择col3)作为table_b_col3 从 table_a

我有两个表:

表A

  

ID || COL
1 | | A
2   | B
3 | C
4   | D

表B

  

ID1 || COL1 || COL2 COL3

  1 |一种   | 60 ||我
2   |乙   | 45 ||我

现在我想获取这样的记录

预期结果:

  

ID1 || COL1 || COL2 COL3
1   |一种   | 60 ||我
2   |乙   | 45 ||我
3   | C   | |
4   | d   | |

我已经尝试使用左连接,但是它只为表b中的行提供值

测试表:

  

ID COL1 || COL2 COL3
1   |一种   | 60 ||我
2   |乙   | 45 ||我

关于如何实现此目标的任何想法,或者也许您可以共享您的代码..谢谢

4 个答案:

答案 0 :(得分:1)

我猜您正在尝试从表B中离开表A的联接。如果您按上述方式离开联接,那么您将获得联接记录,该记录具有表B中的列值(COL1 A和B)。由于在表B 中没有 C,D COL2 值,它将在问题中提供的测试表中返回该值。

您可以使用 LEFT JOIN 获得预期的结果。

SELECT a.col,b.COL1,b.COL2  
FROM Table A a
LEFT JOIN table_B b ON a.ID = b.ID

答案 1 :(得分:1)

我希望您得到的结果是

ID  |  COL1     | COL2
1   |     A     |    60
2   |     B     |    45
3   |     C     |   
4   |     D     |  

为此,您将使用LEFT JOIN

select a.id, a.col, b.col2
from a left join
     b
     on a.id = b.id ;

对于您的实际结果,很难分辨出多余的“ b”来自何处。这是一个简单的方法:

select a.id, coalesce(b.col1, 'b'), b.col2
from a left join
     b
     on a.id = b.id ;

答案 2 :(得分:0)

使用左连接和大小写

 select a.id,case when a.COL='A' then 'A' else 'B' end as col1
 ,b.col2 from
 tablea a left join tableb b on a.id=b.id

答案 3 :(得分:0)

在您的情况下,您可以在列 function cellMove([i, j], index, array) { if (initialBrush.cellIndex === index) { // convert to screen coordinates (of the cell): let [[x0, y0], [x1, y1]] = initialBrush.extent; const localXScale = x[i]; const localYScale = y[j]; const newBrushCoords = [ [ localXScale(x0), localYScale(y0) ], [ localXScale(x1), localYScale(y1) ] ]; return newBrushCoords; } else { // return null; } } A.COL上使用左联接。

B.COL1