MySQL数据库查询:
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
以下查询抛出下一个错误:
您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以便在WHERE'static_package_data.session_id'='AE44278818'GROUP BY static_package_data'附近使用正确的语法。在第1行
我在现有查询中添加了会话ID
答案 0 :(得分:0)
你只需要一个" WHERE"之后的任何事情都应该是AND
2000 AND 5000 AND WHERE 'static_package_data.session_id'='AE4
应该是
2000 AND 5000 AND 'static_package_data.session_id'='AE4
答案 1 :(得分: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
另外,考虑在使用limit时向查询添加order by
子句,否则将获取任何10行。
答案 2 :(得分: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;