пост-ГРЭС считая одну запись дважды, если это соответствует определенным критериям

Я думал, что запрос ниже естественно сделает то, что я объясняю, но по-видимому нет...

Моя таблица похожа на это:

id | name | g | partner | g2
1 | John | M | Sam | M
2 | Devon | M | Mike | M
3 | Kurt | M | Susan | F
4 | Stacy | F | Bob | M
5 | Rosa | F | Rita | F

Я пытаюсь получить идентификатор, где или значение g или g2 равняется 'M'... Но, запись, где и g и значениями g2 является 'M', должна возвратить две строки, не 1.

Так, в вышеупомянутых демонстрационных данных я пытаюсь возвратиться:

$q = pg_query("SELECT id FROM mytable WHERE ( g = 'M' OR g2 = 'M' )");

1
1
2
2
3
4

Но, это всегда возвращается:

1
2
3
4
1
задан Dashiell0415 30 May 2010 в 15:50
поделиться

3 ответа

Ваш запрос не работает, потому что каждая строка возвращается только один раз, независимо от того, соответствует ли она одному или обоим условиям. Чтобы получить желаемое, используйте два запроса и UNION ALL , чтобы объединить результаты:

SELECT id FROM mytable WHERE g = 'M'
UNION ALL
SELECT id FROM mytable WHERE g2 = 'M'
ORDER BY id

Результат:

1
1
2
2
3
4
4
ответ дан 3 September 2019 в 00:13
поделиться

вы можете попробовать UNION по такой схеме:

"SELECT id FROM mytable WHERE ( g = 'M') UNION SELECT id FROM mytable WHERE ( g2 = 'M')"

Надеюсь, это поможет, Мартин

-1
ответ дан 3 September 2019 в 00:13
поделиться
SELECT id FROM mytable WHERE g = 'M'
UNION
SELECT id FROM mytable WHERE g2 = 'M'
-1
ответ дан 3 September 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: