2017-08-31 19 views
0

我試圖從表rem2中獲取數據,但我沒有成功。我該如何做到這一點?如何獲取存在子句中的數據

SELECT *, rem2.id FROM remuneracao_performance_competencia AS competencia 
JOIN remuneracao_performance AS rem1 ON competencia.remuneracao_performance_id = rem1.id 
WHERE EXISTS (
    SELECT 1 FROM remuneracao_performance AS rem2 WHERE 
     rem1.id <> rem2.id and rem1.cargo_id = rem2.cargo_id AND rem1.frequencia_campanha = rem2.frequencia_campanha AND rem1.modelo_remuneracao = rem2.modelo_remuneracao AND competencia.remuneracao_performance_id <> rem2.id AND rem2.inicio_vigencia_campanha <= competencia.inicio_vigencia and rem2.inicio_vigencia_campanha > rem1.inicio_vigencia_campanha 
     ORDER BY rem2.inicio_vigencia_campanha DESC) 
ORDER BY cargo_id ASC 

的錯誤消息是

錯誤代碼:1051未知列 'rem2.id' 在「字段列表

+1

請詳細說明你沒有成功。子查詢中的order by子句是不必要的,可能是罪魁禍首。 –

+0

請使用以下鏈接作爲指導,提出一個很好的問題:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/另外,不清楚你是否無法獲取數據,如空白結果,或者如果你收到錯誤消息,正如我懷疑的 - 同意@DanBracuk – Eli

+1

你不能從'rem2'獲取數據,因爲別名僅在EXISTS條件下的子查詢中。您必須在FROM子句中加入rem2才能從該表中引入字段。既然你的問題是關於細節問題的,而且很容易混淆無意義的代碼,或許你可以用一些示例數據和你想要的結果來闡述,我們可以幫助你指導一個解決方案。 – JNevill

回答

0

我改變了我的查詢:

select distinct competencia.*, rem2.id from remuneracao_performance_competencia as competencia 
join remuneracao_performance as rem1 on competencia.remuneracao_performance_id = rem1.id, 
    remuneracao_performance as rem2 
where 
rem1.id <> rem2.id and 
rem1.cargo_id = rem2.cargo_id and rem1.frequencia_campanha = rem2.frequencia_campanha and 
rem1.modelo_remuneracao = rem2.modelo_remuneracao and competencia.remuneracao_performance_id <> rem2.id and 
rem2.inicio_vigencia_campanha <= competencia.inicio_vigencia and 
rem2.inicio_vigencia_campanha > rem1.inicio_vigencia_campanha 
group by competencia.id, rem1.cargo_id 
相關問題