从多个内部联接中仅选择一行

时间:2021-06-17 19:34:16

标签: php sql pdo row inner-join

我需要找到在给定调查中回答问题的一个用户。问题通过外部密钥链接到调查。

SELECT risposte.utente, utenti.nome_azienda, domande.id_domanda, utenti.id_utente
FROM (risposte INNER JOIN
      domande
      ON domande.id_domanda = risposte.chiave_domanda AND domande.chiave_esterna = 38 
    ) INNER JOIN
    utenti
    ON risposte.utente = utenti.id_utente

这个查询给我的显然是用户发送的每一个答案。因此,例如,如果用户“John”回答了 3 个问题的调查,我将在我的查询中得到三重结果。我尝试使用 GROUP BY risposte.utente or GROUP BY utenti.id_utente,但导致此错误:

#1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db_form_intervista.domande.id_domanda' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

我什至尝试使用 DISTINCT,但即使它没有给我错误结果也是一样的。

我是学生,所以这是我第一次尝试这种查询。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

一个非常简单的解决方案是使用 LIMIT 子句,在这种情况下,后跟 1

所以查询将是:

SELECT risposte.utente, utenti.nome_azienda, domande.id_domanda, utenti.id_utente
FROM (risposte INNER JOIN
  domande
  ON domande.id_domanda = risposte.chiave_domanda AND domande.chiave_esterna = 38 
) INNER JOIN
utenti
ON risposte.utente = utenti.id_utente
LIMIT 1

要考虑的一个重要问题是,这只会返回它找到的第一条记录。我不确定这是否适合您的情况。

相关问题