2010-04-19 6 views
1

Я создал таблицу со следующими корпусногоНужна помощь с SQL Query

$sql = "CREATE TABLE followers 
    (
    uid int UNSIGNED NOT NULL UNIQUE, 
    PRIMARY KEY(uid), 
    follower_count int UNSIGNED , 
    is_my_friend bool, 
    status_count int UNSIGNED, 
    location varchar(50) 
    )"; 

Мне нужно найти UID человека с макс (status_count + Подписчиков:) и чей is_my_friend = 1

Я написал следующий запрос, но я не получаю правильный uid.

SELECT p.uid FROM (select uid,is_my_friend,max(follower_count+status_count) from followers) p WHERE p.is_my_friend = 1; 
+0

Что делать, если есть более чем один пользователь с такой же максимальной? –

+0

@Mark: все в порядке ... мой код может иметь дело с этим – Bruce

ответ

3

Следующий запрос будет работать:

Select uid 
From followers 
Where is_my_friend = 1 
Order By (follower_count+status_count) desc LIMIT 0,1 

Предельные 0,1 работы в MySql.

Или, если вы хотите, чтобы вернуть все строки, в которых только Подписчиков: + status_count = макс, это запрос:

Select uid 
From followers 
Where is_my_friend = 1 
    And (follower_count+status_count) = (select max(follower_count+status_count) 
             from followers 
             where is_my_friend = 1) 
1
SECLECT uid FROM followers ORDER BY (follower_count + status_count) DESC WHERE is_my_friend = 1 
+0

@Svisstack: SELECT uid FROM followers WHERE is_my_friend = 1 ORDER BY (follower_count + status_count) DESC – Bruce

1

Выбор TOP 1 UID (Подписчиков: + status_count) , как TOTALCOUNT ОТ последователей ГДЕ p.is_my_friend = 1 упорядочить по алфавиту TOTALCOUNT

я не на 100%, если этот заказ возможно. Попробуйте, если не создать представление, которое сочетает в себе эти поля

Смежные вопросы