2010-12-20 61 views
6

子查詢是否可以將兩個值返回到外部查詢? 如:子查詢有可能返回兩個值嗎?

SELECT 1, 
     (SELECT COUNT(*), MAX(*) FROM test_table WHERE test=123) 
FROM another_table 

還是有更好的方式來做到這一點?

+0

如果Another_Table有20行,你會得到20行包含相同數據的輸出,除非列'test'只存在於Another_Table中,而不存在於Test_Table中(在這種情況下,它是寫入限制的有趣方式(這是'meiosis'的一個相當極端的例子)。 – 2010-12-20 01:08:16

回答

6

如果使用FROM子句中的子查詢而不是字段列表,則可以將輸出視爲表格並引用單獨的列。

+0

我有點困惑,請你再解釋一下, – 2010-12-20 00:42:57

+2

'SELECT Aa,Ab FROM(SELECT a,b FROM MyTable)AS A;' – siride 2010-12-20 00:48:43

+0

@kevin你的子查詢可以作爲帶有別名的'FROM'子句中的附加表(例如, 'AS test_t',同樣命名子查詢中的字段),並引用字段列表中的值:'SELECT 1,test_t.count,test_t.max FROM(SELECT ...' – Orbling 2010-12-20 00:49:40

1

你只是選擇數字作爲結果,因此不能你只是做:

SELECT 1, COUNT(*), MAX(*) FROM test_table WHERE test=123 
+0

它們是兩個不同的表格:\ – 2010-12-20 00:38:58

0

不可能

mysql> select 1, (select 2, 3) from dual; 
ERROR 1241 (21000): Operand should contain 1 column(s) 

如果您正在處理兩個表,你什麼結果在一行,你應該預先加入。

0

嗯,這取決於你想要怎麼處理數據,你可以使用JOIN語法連接兩個表,其中一個表實際上可以是子查詢。我認爲這可能是你想要的。

我甚至沒有用戶你目前的查詢會做..

文檔: http://dev.mysql.com/doc/refman/5.0/en/join.html