2010-01-25 73 views
1

是否可以编写一个可以返回两行的查询,一个在WHERE子句中指定,另一个在表中最高。mysql - 返回最高'视图'和特定ID'视图'的SELECT

例如。

Table_1 
-row_id 
-views 
-content 

是否有可以结合下面的查询:

SELECT views FROM Table_1 WHERE row_id = 10 

SELECT MAX(views) FROM Table_1 

或者是两个查询我唯一的选择?

回答

1

我不认为有可能在技术上使用单个查询;但是,你可以使用UNION操作

SELECT views FROM Table_1 WHERE row_id = 10 

UNION 

SELECT MAX(views) FROM Table_1 
+0

是UNION更有效的两个单独的查询? – Mark 2010-01-25 16:16:03

+0

嗯......我个人认为联盟会稍微好点,然后发送两个查询; – effkay 2010-01-25 16:21:05

2

你可以用一个子查询做到这一点:

SELECT (SELECT MAX(views) FROM Table_1) as max_view, views 
FROM Table_1 
WHERE row_id = 10 

每一行都将在它同max_view值。但我不确定这个查询对大量行的性能会产生什么影响。

+0

'(SELECT MAX(views)FROM Table_1)AS max'! – hsz 2010-01-25 16:14:55

+0

嗯,我错了,谢谢hsz。 – 2010-01-25 16:16:44

+0

它不会是两排。 – Martin 2010-01-25 16:32:10

0

使用UNION声明:

SELECT views FROM Table_1 WHERE row_id = 10 
UNION 
SELECT MAX(views) FROM Table_1 
0

两行,一行与所选行和其他具有最高视图的行。

SELECT * FROM TABLE_1 WHERE ROW_ID = 10或视图=(SELECT MAX(视图)FROM TABLE_1 LIMIT 1) 排序ROW_ID = 10 DESC

+0

只想帮忙!没有解释下投票是不体面的。 – Martin 2010-01-25 16:29:54

+0

不是我。感谢您的输入。 – Mark 2010-01-25 17:05:39