Проблема с использованием Distinct Mysql - дублирующихся строк - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь выбрать несколько meta_keys с помощью SQL, но использование DISTINCT не помогает предотвратить дублирование значений.

Вот SQL-запрос, который я использую:

SELECT DISTINCT lat.meta_value as lat, lat.post_id, lng.meta_value as lng
FROM wp_postmeta lat join
     wp_postmeta lng
     on lat.post_id = lng.post_id and
        lat.meta_key = 'billing_cpf' and
        lng.meta_key = 'billing_profissao'
        WHERE lng.meta_value = 'Médico(a)'  
ORDER BY `lat` ASC

Возвращает дублированные значения для лат.

Может ли кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 05 ноября 2018

Конечно, он возвращает дублированные значения для lat. Вот как select distinct работает. Он возвращает различные строки , а не столбцы .

Если вы хотите одну строку на lat, используйте group by. Но вам нужны функции агрегации. Например:

SELECT lat.meta_value as lat,
       GROUP_CONCAT(DISTINCT lat.post_id) as post_ids,
       GROUP_COCNAT(DISTINCT lng.meta_value) as lngs
FROM wp_postmeta lat join
     wp_postmeta lng
     on lat.post_id = lng.post_id and
        lat.meta_key = 'billing_cpf' and
        lng.meta_key = 'billing_profissao'
        WHERE lng.meta_value = 'Médico(a)'  
GROUP by lat.meta_value
ORDER BY `lat` ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...