簡體   English   中英

MySQL如何避免不得不創建臨時表

[英]MySql how to avoid having to create temporary tables

我對SQL還是很陌生,需要通過WordPress插件( WP Data Tables )使用查詢,但是該插件不允許創建臨時表。

要解決此問題,我相信我必須在聯接內創建新表,但是我不確定如何執行此操作。

我需要從中刪除表創建的查詢是:

create temporary table if not exists _SurveyData AS

(SELECT 
    _RefTable.RefID,
    _RefTable.ClientRef,
    _RefTable.SiteName,
    _JobTable.JobID,
    _JobTable.JobTypeID,
    _JobTable.JobClosedDate 
FROM
    _RefTable, _JobTable
WHERE
    _RefTable.RefID = _JobTable.RefID and  _JobTable.JobTypeID = 1);

create temporary table if not exists _InstallData AS

(SELECT 
    _RefTable.RefID,
    _RefTable.ClientRef,
    _RefTable.SiteName,
    _JobTable.JobID,
    _JobTable.JobTypeID,
    _JobTable.JobClosedDate 
FROM
    _RefTable, _JobTable
WHERE
    _RefTable.RefID = _JobTable.RefID and  _JobTable.JobTypeID = 2);

SELECT
    _RefTable.RefID,
    _RefTable.ClientRef,
    _RefTable.SiteName,
    _SurveyData.JobID,
    _SurveyData.JobClosedDate,
    _InstallData.JobID,
    _InstallData.JobClosedDate
from
    _RefTable, _SurveyData, _InstallData
Where
    _RefTable.RefID = _SurveyData.RefID and _RefTable.RefID = _InstallData.RefID
    order by RefID

任何幫助或朝着正確方向的觀點將不勝感激。

將臨時表更改為子查詢。

嘗試這個:

SELECT _RefTable.RefID,
    _RefTable.ClientRef,
    _RefTable.SiteName,
    _SurveyData.JobID,
    _SurveyData.JobClosedDate,
    _InstallData.JobID,
    _InstallData.JobClosedDate
from RefTable
INNER JOIN(
            SELECT 
            _RefTable.RefID,
            _RefTable.ClientRef,
            _RefTable.SiteName,
            _JobTable.JobID,
            _JobTable.JobTypeID,
            _JobTable.JobClosedDate 
                FROM RefTable, _JobTable WHERE _RefTable.RefID = _JobTable.RefID and  _JobTable.JobTypeID = 1
            ) as _SurveyData on _RefTable.RefID = _SurveyData.RefID 
INNER JOIN(
            SELECT 
            _RefTable.RefID,
            _RefTable.ClientRef,
            _RefTable.SiteName,
            _JobTable.JobID,
            _JobTable.JobTypeID,
            _JobTable.JobClosedDate 
            FROM  _RefTable, _JobTable WHERE _RefTable.RefID = _JobTable.RefID and  _JobTable.JobTypeID = 2
        ) as _InstallData on _RefTable.RefID = _InstallData.RefID
order by RefID;

暫無
暫無

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

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