2013-04-28 100 views
3

这是我访问过您的网站数百次后的第一篇文章。MySQL:从具有公共ID的不同表中选择

简单的问题。

我有两个表,独立,所有不同,只有一个共同的列。 我们称之为ID_Client

我不必修改这些表格,但我想合并它们并在此选择查询。

表A

 
Col_ID |Col 1 |Col 2 |Col 3 | 
----------|---------|---------|---------| 
40302025 |50  | 60  | 70  | 
40302028 |50  | 60  | 70  | 
40302030 |50  | 60  | 70  | 
40302055 |50  | 60  | 70  | 
40302074 |50  | 60  | 70  | 

表B

 
Col_ID |Col X |Col Y |Col Z | 
----------|---------|---------|---------| 
40302025 |ABC  | CDE | 7ASE | 
40302028 |ABC  | CDE | 7ASE | 
40302030 |ABC  | CDE | 7ASE | 
40302055 |ABC  | CDE | 7ASE | 
40302074 |ABC  | CDE | 7ASE | 

结果见表

 
Col_ID |Col X |Col Y |Col Z |Col 1 |Col 2 |Col 3 | 
----------|---------|---------|---------|---------|---------|---------| 
40302055 |ABC  | CDE | 7ASE |50  | 60  | 70  | 
40302074 |ABC  | CDE | 7ASE |50  | 60  | 70  | 

我要查询(如 “订单”, “限价” 等),以便第一个表依赖于第二个表,反之亦然。

实施例:我想表A的第2列,基于表B的X列,其中ID> 40302030

实施例2进行排序:我想选择表的表A中的第3列和B列X其中ID> 40302030

我不希望查询解决这些示例,但我想了解应该使用哪个函数。我试过UNION,UNION ALL,JOIN,但也许我不明白使用的光学。

这听起来像“我想合并两个表在一个,然后我让查询像SELECT,ORDER BY,WHERE等”

谢谢,对不起,我的英语

卡罗

回答

7

你应该JOIN两个表。事情是这样的:

SELECT 
    a.col_ID, 
    b.colx, 
    b.coly, 
    b.colz, 
    a.col1, 
    a.col2, 
    a.col3 
FROM tableA AS a 
INNER JOIN tableB AS b ON a.col_ID = b.col_ID 
WHERE a.col_ID > 40302030; 

看到它在这里的行动:

结果:

| COL_ID | COLX | COLY | COLZ | COL1 | COL2 | COL3 | 
------------------------------------------------------ 
| 40302055 | ABC | CDE | 7ASE | 50 | 60 | 70 | 
| 40302074 | ABC | CDE | 7ASE | 50 | 60 | 70 | 

对于排序添加ORDER BY条款。


既然两张表互相关联,那么你应该是JOIN他们。

如果您想将两个表中的列合并到一组列中,您可能需要使用UNION,我认为情况并非如此。既然你想显示tablea中的所有列和tableb中的所有列。

+0

完美!大!!!但是......如果我想在这些单个数据上创建一个记录集,我使用“COLX”或“b.COLX”?例如:MyVar = rs(“b.COLX”) – 2013-04-28 08:51:32

+0

@ user2327061 - 将选择“b.colx”,其名称为“colx”而不是“b.colx”,其他列也是如此。所以它应该是'MyVar = rs(“colx”)'。 – 2013-04-28 09:55:30

+0

非常感谢。 Carlo – 2013-04-28 12:54:19

2

下面是一个例子:

SELECT 
    a.col_ID, b.colx,b.coly,b.colz,a.col1,a.col2,a.col3 
FROM 
    tableA a, tableB b 
WHERE 
    a.col_ID = b.colID 
ORDER BY 
    b.colx ASC 

希望它能帮助。

相关问题