从多个表中选择多个列

时间:2011-11-28 22:26:06

标签: mysql

我是MySQL的初学者,我很难弄清楚如何解决这个问题:

我有两个表,每个表都有很多条目。让我们说这些是表格:

   Table 1       ||          Table 2
-------------    ||    -------------------
| dt1 | dt2 |    ||    | dt3 | dt4 | dt5 |
-------------    ||    -------------------
|  1  | abc |    ||    |  3  | wsx | 123 |
|  7  | asd |    ||    |  3  | qax | 456 |
| 19  | zxc |    ||    |  4  | rfv | 789 |
-------------    ||    -------------------

我想要做的是得到一个包含“dt2”,“dt4”和“dt5”列并且只有一个条目的表格。为此,我将应用于每个表的查询甚至可能必须限制结果。为了从separetelly每个表中得到我想要的结果,我会做以下事情:

SELECT `dt2` FROM `table1` WHERE `dt1`=7;

SELECT `dt4`,`dt5` FROM `table2` WHERE `dt3`=3 LIMIT 0,1;

还有一件事,我不想为每一列使用子查询,因为在我想要解决的实际问题中,我从每个表中调用5或6列。

为了弄清楚,我想得到的是这样的:

-------------------
| dt2 | dt4 | dt5 |
-------------------
| asd | qax | 456 |
-------------------

3 个答案:

答案 0 :(得分:9)

SELECT a.dt2, b.dt4, b.dt5
FROM table1 a, table2 b
WHERE a.dt2 = 'asd'
LIMIT 0,1;

答案 1 :(得分:1)

SELECT a.dt2, b.dt4, b.dt5
FROM table1 a, table2 b
WHERE a.dt2 = 'asd'
LIMIT 0,1;

Ben的答案很好,您可以使用逗号(,)分隔更多表,但如果这些表之间存在关系,那么您应该使用一些Sub QueryJOIN

答案 2 :(得分:0)

Ben的回答解决了我的类似问题。

SELECT t1.dt2, t2.dt4, t2.dt5, t2.dt3 #get dt3 data from table2
FROM table1 t1, table2 t2
WHERE t1.dt2 = 'asd' AND t2.dt4 = 'qax' AND t2.dt5 = 456


| asd | qax | 456 | 3 | 

' 3'通过查询表2中的“qax”,“456”数据作为我需要的数据,否则您将准确指定从列返回的数据。

我的实例中只有2个表可供查询,因此我可以使用AND表达式,这可能不是最佳实践,并且最有可能是匹配来自多个数据的更好方法表。

编辑:我刚刚意识到这个问题是5岁了。我希望你现在已经实现了你想要的目标。