簡體   English   中英

如何在 adonis 查詢構建器中只有一列不為空的情況下應用

[英]How apply where only a column is not null in adonis query builder

我需要檢查,如果該列percentage_correct > = parCorrect如果percentage_correct <> NULL

我嘗試類似:

const unidadeSequenceAtualEstudante = await Database.select("*")
            .from("student_quiz_historics")
            .where("student_id", idEstudante)
            .where(function(){
                this
                .whereNotNull("percentage_correct")
                .where("percentage_correct", ">=", parQtdAcerto)
            })
            .where("class_id", idClasse)
            .where("book_id", idLivro)
            .where("execution_back_status", "<>", "Cancelado")
            .orderBy("sequence", "desc")
            .first();

但是當我只有percentage_correct null 的記錄時,他們仍然試圖將其應用於何處。

我在復制您的問題時遇到了一些麻煩。 您所擁有的應該可以工作,但您可能沒有考慮 SQL 在 NULL 方面的行為:與 NULL 相比的任何內容都是 NULL,這就是IS NOT NULL語法存在的原因。 例如:

foo=# SELECT 1 >= NULL;
?column?
----------
NULL
(1 row)

foo=# SELECT NULL >= 1;
?column?
----------
NULL
(1 row)

這意味着您可以完全不檢查空值,因為只有滿足條件的行才會被返回:

const unidadeSequenceAtualEstudante = await Database.select("*")
  .from("student_quiz_historics")
  .where({
    book_id: idLivro,
    class_id: idClasse,
    student_id: idEstudante
  })
  .where('percentage_correct', '>=', parQtdAcerto)
  .where("execution_back_status", "<>", "Cancelado")
  .orderBy("sequence", "desc")
  .first();

這是一個好主意嗎? 值得商榷。 我認為這對於這個目的可能沒問題,但我們不應該假設NULLFALSE是一回事,因為它不是。

如果您的查詢仍然有問題,您需要提供有關您正在使用的數據庫、您的架構是什么以及您遇到什么樣的錯誤的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM