I codici di stato HTTP sono specifici per il protocollo HTTP. Quindi, se la richiesta ha esito positivo, nel senso che nulla è andato storto con la negoziazione HTTP, è necessario restituire lo stato HTTP 200 OK.
Il fatto che il numero di righe di risultati in una query completata correttamente sia zero è completamente irrilevante per il protocollo che si utilizza per la comunicazione.
Quindi, non mescolare i due: restituire una risposta riuscita valida, portando un set di risultati vuoto.
In effetti, a mio parere, anche se l'esecuzione della tua query ha provocato un errore come "tabella o vista sconosciuta", dovresti ancora non mescolare i codici di errore specifici per la tua applicazione con i codici di errore HTTP. Per quanto riguarda HTTP, c'era una richiesta HTTP perfettamente valida, che ora sta ricevendo una risposta HTTP perfettamente valida, e qualsiasi informazione su ciò che l'applicazione ha fatto mentre serviva la richiesta, come i risultati o perché i risultati non potevano essere ottenuto, deve essere incluso nel payload specifico dell'applicazione della risposta e non è uno degli affari di HTTP.