2012-10-17 86 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)