Выбор двух строк из одной строки таблицы в MySQL - PullRequest
0 голосов
/ 27 октября 2011

у меня есть стол A (Id1, Id2, someValue)

Чего я хочу достичь в mySQL:

Мой SELECT запрос должен вернуться два ряда:

Id1, someValue
Id2, someValue

(на основе определенного условия - например, где someValue> N)

Как мне добиться этого, не используя UNION?

Ответы [ 4 ]

1 голос
/ 27 октября 2011

Поскольку это невозможно без использования UNION, вот как его заархивировать:

(SELECT ID1 as ID, someValue FROM A WHERE someValue > N)
UNION
(SELECT ID2 as ID, someValue FROM A WHERE someValue > N)
1 голос
/ 27 октября 2011

Как насчет:

SELECT 
    CASE
        WHEN somecondition THEN ID1
        ELSE ID2
    END AS ID, someValue
FROM that_table

somecondition может быть выражением, похожим на те, которые вы используете в предложении WHERE.

0 голосов
/ 27 октября 2011

Если вам нужен возврат в разделенных строках, вам лучше разделить схему БД на «id, someValue». При вставке просто вставьте {id1_value, someValue}, {id2_value, someValue}, а при получении просто выберите из таблицы, где value = someValue. Вы получите ожидаемый доход.

Если вам нужно каким-то образом связать id1 и id2 (создать связанный список или что-то еще), вы можете добавить связанный идентификатор в запись. Схема может быть {id, value, related_id}.

0 голосов
/ 27 октября 2011

Не могли бы вы просто использовать или? например:

select * from A where someValue = 'x' OR someValue 'y'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...