簡體   English   中英

SQL連接查詢問題

[英]Issue with SQL join query

這是我查詢的簡化版本。 它在SQLite中運行沒有問題,但在MYSQL中卻沒有問題。

錯誤 :“ on子句”中的未知列“ tab2.key”

SELECT 
  tab2.key AS remarksId, 
  tab1.sessionDate AS date, 
  tab1.sessionStart AS startTime
FROM 
  table1 AS tab1, 
  table2 AS tab2, 
  table3 AS tab3, 
  table4 AS tab4
INNER JOIN 
  table5 AS tab5 
  ON 
    tab5.remarkId = tab2.key 
  WHERE 
    tab1.userId='<anyNumber>' AND 
    tab2.objectiveId='<anyKey>' AND 
    tab1.reportId=tab2.reportId AND 
    tab1.reportId=tab3.key AND 
    tab4.key=tab3.sortieId 
ORDER BY date, startTime;

不幸的是,將列放在`中沒有幫助。

我不確定命名列“ key”是否是一種好習慣( MYSQL關鍵字 ),但是由於現有的安裝,我必須以某種方式進行處理。 為了進行快速測試,我將“鍵”列重命名,但是也沒有成功。

非常感謝

簡而言之, 不要混合聯接符號 ,如果可以選擇,請使用當前的ANSI 92聯接語法而不是89標准(是的……分別是1992年和1989年!)

其次...別名是為了幫助您保存鍵入並處理對同一表的多個引用...。因此...簡化了名稱t1,t2,t3 ...

最后,如果您必須在MySQL中使用保留字/受限字,請使用反引號。

SELECT t2.`key` AS remarksId 
FROM table1 t1
INNER JOIN table2 t2
   ON t1.reportId = t2.reportId 
INNER JOIN table3 t3
   ON t1.reportId = t3.`key`  
INNER JOIN table4 t4
   ON t4.`key` = t3.sortieId 
INNER JOIN table5 t5
   ON t5.remarkId = t2.`key`
WHERE t1.userId = '<anyNumber>' 
  AND t2.objectiveId = '<anyKey>'  
ORDER BY `date`, startTime;

暫無
暫無

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

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