2017-02-04 114 views
0

MySQL數據庫查詢:MySQL服務器版本正確的語法近ID使用

SELECT * 
FROM (SELECT * 
     FROM (`static_package_data`) 
      LEFT JOIN package_interest pi ON static_package_data.id=pi.package_details_id 
     WHERE `package_availability_type` = 'all' 
      AND `admin_status` = 'ACTIVE' 
      AND `status` = 'ACTIVE' 
      AND static_package_data.package_price BETWEEN 2000 AND 5000 
      AND WHERE 'static_package_data.session_id'='AE44278818' 
     GROUP BY static_package_data.id 
     UNION ALL 
     SELECT * 
     FROM (`static_package_data`) 
      LEFT JOIN package_interest pi ON static_package_data.id=pi.package_details_id 
     WHERE `package_availability_type` ='range' 
      AND `admin_status` = 'ACTIVE' 
      AND `status` = 'ACTIVE' 
      AND `to_date` >= '2017-02-04'AND static_package_data.package_price BETWEEN 2000 AND 5000 
      AND WHERE 'static_package_data.session_id'='AE44278818' 
     GROUP BY static_package_data.id 
    ) as dt LIMIT 0 , 10 

下面的查詢拋出了一個錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near WHERE 'static_package_data.session_id'='AE44278818' GROUP BY static_package_data.' at line 1

我說會話ID從我現有的查詢

+0

你嘗試加入'GROUP BY'前的空間? – karthikr

+0

您在AND之前缺少一個空格 – Mikkel

回答

0

簡單,

SELECT * 
FROM ( 
       SELECT * 
       FROM  (`static_package_data`) 
       LEFT JOIN package_interest pi 
       ON  static_package_data.id=pi.package_details_id 
       WHERE  `package_availability_type` = 'all' 
       AND  `admin_status` = 'ACTIVE' 
       AND  `status` = 'ACTIVE' 
       AND  static_package_data.package_price BETWEEN 2000 AND  5000 
       AND 
       WHERE  'static_package_data.session_id'='AE44278818' 
       GROUP BY static_package_data.id 
       UNION ALL 
       SELECT * 
       FROM  (`static_package_data`) 
       LEFT JOIN package_interest pi 
       ON  static_package_data.id=pi.package_details_id 
       WHERE  `package_availability_type` ='range' 
       AND  `admin_status` = 'ACTIVE' 
       AND  `status` = 'ACTIVE' 
       AND  `to_date` >= '2017-02-04' 
       AND  static_package_data.package_price BETWEEN 2000 AND  5000 
       AND 
       WHERE  'static_package_data.session_id'='AE44278818' 
       GROUP BY static_package_data.id) AS dt limit 0 , 
     10; 
0

你只需要一個「WHERE」之後的任何東西就應該是AND

2000 AND 5000 AND WHERE 'static_package_data.session_id'='AE4 

應該

2000 AND 5000 AND 'static_package_data.session_id'='AE4 
+0

是的,但是現在查詢它不返回任何data.and AND'static_package_data.session_id'='AE4在此會話ID中有多個數據'AE4'對於5行是相同的 –

0

有兩個額外的WHERE條款在你的代碼與其他的語法錯誤,如各地的列名,而不是反引號單引號一起。

SELECT 
    * 
FROM 
    (SELECT 
     * 
    FROM 
     `static_package_data` 
    LEFT JOIN package_interest pi ON static_package_data.id = pi.package_details_id 
    WHERE 
     `package_availability_type` = 'all' 
      AND `admin_status` = 'ACTIVE' 
      AND `status` = 'ACTIVE' 
      AND `static_package_data`.package_price BETWEEN 2000 AND 5000 
      AND `static_package_data`.`session_id` = 'AE44278818' 
    GROUP BY static_package_data.id UNION ALL SELECT 
     * 
    FROM 
     `static_package_data` 
    LEFT JOIN package_interest pi ON static_package_data.id = pi.package_details_id 
    WHERE 
     `package_availability_type` = 'range' 
      AND `admin_status` = 'ACTIVE' 
      AND `status` = 'ACTIVE' 
      AND `to_date` >= '2017-02-04' 
      AND `static_package_data`.package_price BETWEEN 2000 AND 5000 
      AND `static_package_data`.`session_id` = 'AE44278818' 
    GROUP BY `static_package_data`.id) AS dt 
-- Consider adding an order by clause here -- 
LIMIT 0 , 10 

而且,考慮使用限制或任何其他行10將獲取時添加order by子句來查詢。

+0

TQ。但現在查詢它不返回任何data.and AND'static_package_data.session_id'='AE4在這個會話ID有多個數據'AE4'是相同的5行 –

+0

@Shan我建議你發佈一個新的問題添加樣本數據和預期輸出解釋了爲什麼輸出是這樣的 – GurV

相關問題