从多个表中选择多个列,但某些列除外

时间:2015-03-18 15:53:34

标签: mysql

我有三张桌子。

第一个表格如下:

+----+----+----+
| id |  x |  y |
+----+----+----+

第二和第三个表格如下:

+----+----+----+----+----+----+----+----+----+----+----+----+
| id | Z1 | Z2 | Z3 | .. | .. | .. | .. | .. | .. | .. | Zn |
+----+----+----+----+----+----+----+----+----+----+----+----+

n非常大,大约800-900。

我知道这是非常丑陋的表和数据库。但它是一个原始数据集和某个实验的学习集。请忽略它。

查询的骨架就像:

    'SELECT a.*, b.*, c.* \
    FROM `test_xy` a,  `test_1` b, `test_2` c \
    WHERE a.id = b.id AND b.id = c.id'

我关心的是,查询的结果包括id字段三次。我希望id字段只在结果的前面出现一次。

我可以通过切片结果表(通过Python,MATLAB等)

来实现

但是,有更好的方法来处理大量的列吗?我的意思是,在查询阶段可以排除第二和第三个表的id字段吗?

1 个答案:

答案 0 :(得分:0)

答案是USING语法:顺便提一下MySQL。 http://dev.mysql.com/doc/refman/5.5/en/join.html。在做其他事情之前学习使用JOIN;将jon条件放入where子句只是计划错误。

SELECT a.*, b.*, c.* 
FROM `test_xy` a JOIN  `test_1` b USING(`id) 
JOIN `test_2` c USING(`id)