2012-10-17 59 views
0

我有一个返回3列的子查询。我无法摆脱它们。我只想为父查询使用其中一列。MySQL子查询选择特定列

例如。

SELECT * FROM table_a WHERE id = (SELECT a,id,b FROM table_b LIMIT 1); 

我只想从table_b得到id

我要找的线沿线的东西:

SELECT * FROM table_a WHERE id = (SELECT a,id,b FROM table_b LIMIT 1)[id]; 

如何我会做到这一点?

+0

SELECT * FROM表-A WHERE ID =(SELECT ID FROM表-B LIMIT 1);你不能这样使用? –

+0

查询要复杂得多,额外的列我无法摆脱 – nick

回答

3

如何生根粉这一点:

SELECT * FROM table_a WHERE id = 
(select id from 
(SELECT a,id,b FROM table_b LIMIT 1)a); 
+0

哈哈。是的。没有意识到这很容易 – nick

+1

这是一个很好的解决方案!我在MAX中选择了一个值,但需要在子查询中使用ID(因此必须选择两列)。这解决了这个问题。 – Ville

0
SELECT * 
FROM table_a 
WHERE id IN 
    (
     SELECT a FROM tableB limit 1 
     UNION 
     SELECT id FROM tableB limit 1 
     UNION 
     SELECT b FROM tableB limit 1 
    ) 
0
SELECT * FROM table_a, (SELECT a,id,b FROM table_b LIMIT 1) temp_b where table_a.id = temp_b.id; 

是这样的结果符合你的想法?

0

我认为实现这一目标的最好办法是:

SELECT * 
FROM table_a 
inner join 
(
     SELECT a as id FROM tableB 
     UNION 
     SELECT id FROM tableB 
     UNION 
     SELECT b as id FROM tableB 
) tempB on (table_a.id=tempB.id)