2015-11-05 2 views
0

Извините, не знаю, какое название должно дать на этот вопрос, так как это может запутать.простую инструкцию mysql, которую я не могу найти

Моя таблица имеет только две колонки - USERNAME1 и USERNAME2 я это:

SELECT * FROM `Friends` WHERE `userName1` = 'aName' 
UNION 
SELECT * FROM `Friends` WHERE `userName2` = 'aName' 

В результате этого SQL заявления приносит мне те строки, которые включают в себя «aName» в любом userName1 или userName2. Как отфильтровать результат, чтобы показать только ДРУГИЕ записи? Во избежание возврата столбец, который содержит 'aName'

ответ

4

Вы можете использовать:

select userName2 from friends where userName1 = 'aName' 
union 
select userName1 from friends where userName2 = 'aName'; 

Метод без union:

select distinct (case when userName1 = 'aName' then userName2 else userName1 end) 
from friends 
where 'aName' in (userName1, userName2); 
+1

Я думаю, что предложение where должно быть WHERE (userName1 = 'aName' OR userName2 = 'aName') – Maverick

+0

полностью работает спасибо. пытаясь скрыть это до php теперь – cmario

+0

любая идея, как я могу вернуть user1Image OR user2Image вместе с username1 или userName2? что-то вроде then (userName2, userImage2) или для другого случая (userName1, userImage1) – cmario

-2

Если это так, вы можете использовать INNER JOIN

SELECT * 
    FROM `Friends` f 
    INNER JOIN `Friends` f1 
    ON f.userName1 = f1.userName2 
+0

Этот запрос является неполным. Вам нужно подтвердить «aName», и друг может быть в 'userName1' или' userName2'. И вам нужно вернуть один столбец no '*' –

+0

Это просто не отвечает на вопрос. –

+0

UNION будет выполнять ту же функцию, что и INNER JOIN, и при фильтрации на основе того же столбца. Результат должен совпадать. – Maverick

0

Я бы попробовал что-то вроде этого:

SELECT userName2 as 'name' FROM Friends WHERE userName1 = 'aName' 
UNION 
SELECT userName1 as 'name' FROM Friends WHERE userName2 = 'aName' 

Вы также можете потребовать, чтобы они не могут быть оба равны '' aName

SELECT userName2 as 'name' FROM Friends WHERE userName1 = 'aName' and userName2 != 'aName' 
UNION 
SELECT userName1 as 'name' FROM Friends WHERE userName2 = 'aName' and userName1 != 'aName' 

(... которые могут быть улучшены)

+0

К сожалению, я немного опоздал –

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