2017-08-29 80 views
0

我有一個mysql查詢,我試圖弄清楚。mysql從2個不同的表中選擇並返回最高的價格

基本上我有表1的cols:地產代理,價格,位置,別墅,平房

,我有表2的cols:地產代理,價格,位置,複式,複式

正如你所看到的這些表格是非常不同的。

我需要一個查詢來選擇表1或表2中的所有列,具體取決於哪個列具有最高的價格。例如:

SELECT * FROM table1, table2 WHERE table1.price = table2.price ORDER BY price DESC LIMIT 1,1; 
+0

表1或表2或兩者?你可以使用agGregate函數** Max ** –

+0

我應該使用ORDER BY a.priceInt,b.priceInt ....爲什麼在我的數據庫中有1或11被追加到列名稱。 – KDJ

+0

@menai我需要從表1或2中選擇所有列,具體取決於哪一個具有最高的價格......沒有合併它們 – KDJ

回答

0

如果表是如此的相似,你可以UNION它們,然後排序結果下降,並獲得更高的價格。

(SELECT * FROM table1) 
UNION ALL 
(SELECT * FROM table2) 
ORDER BY price DESC 
LIMIT 1 

如果您想給它們別名,您需要明確指定列。


重新您的後續問題:

如果你有兩個表之間不同的幾列,並要保留它們,您需要從SELECT *和名稱都列明確移開。

(SELECT estate agent, price, location, bungalow, cottage, NULL AS penthouse, NULL AS duplex 
FROM table1) 
UNION ALL 
(SELECT estate agent, price, location, NULL, NULL, penthouse, duplex 
FROM table2) 
ORDER BY price DESC 
LIMIT 1 

您不需要在第二個子查詢中提供別名,因爲列名始終由UNION的第一個查詢確定。即使您在第二個查詢中聲明列別名,它們也會被忽略。

+0

工程就像一個魅力......我的示例代碼(用於給出代碼的緣故)返回了一行,將所有列。我需要的是UNION ALL – KDJ

+0

從前端角度來看,如果它的表1或表2中的任何一個,您如何檢測山寨是否具有價值。爲了簡潔起見,它可以是0或1.如果它是一個單位將指定該列返回null? – KDJ

0

試試這個: SELECT * FROM( SELECT * FROM表1 UNION SELECT * FROM表2 ORDER BY價格降序)× LIMIT 1;

相關問題