尝试在 PHP 和 MySQL 中使用不同条件连接多个表时出现以下错误。
Incorrect usage of UNION and ORDER BY
这是我的查询:
select
b.member_id,
b.rest_name,
b.city,
b.proviance,
b.postal,
b.address,
b.country,
b.person,
b.mobile,
b.url,
b.status,
b.premium,
b.image,
b.business_phone_no,
b.email,
b.multiple_image,
b.latitude,
b.longitude,
b.quadrant,
d.member_id,
d.day_id,
d.cat_id,
d.subcat_id,
d.comment,
d.city,
d.special_images,
c.cat_id,
c.special,
sub.subcat_id,
sub.subcat_name,
sub.status,
sl.day_id,
sl.member_id,
sl.date_from,
sl.date_to
from
db_restaurant_basic as b
left join
db_restaurant_detail as d
on b.member_id = d.member_id
left join
db_category as c
on d.cat_id = c.cat_id
left join
db_subcategory as sub
on d.subcat_id = sub.subcat_id
left join
db_special_images as sl
on d.day_id = sl.day_id
and d.member_id = sl.member_id
where
b.city = '2'
and d.day_id = '3'
and c.special = '2'
and sl.date_from <= '2016-10-26'
and sl.date_to >= '2016-10-26'
and b.status = 1
and sub.status = 1
and sl.date_from != ''
and sl.date_to != ''
ORDER BY
b.member_id DESC
UNION ALL
SELECT
b.member_id,
b.rest_name,
b.city,
b.proviance,
b.postal,
b.address,
b.country,
b.person,
b.mobile,
b.url,
b.status,
b.premium,
b.image,
b.business_phone_no,
b.email,
b.multiple_image,
b.latitude,
b.longitude,
b.quadrant,
d.member_id,
d.day_id,
d.cat_id,
d.subcat_id,
d.comment,
d.city,
d.special_images,
c.cat_id,
c.special,
sub.subcat_id,
sub.subcat_name,
sub.status,
sl.day_id,
sl.member_id,
sl.date_from,
sl.date_to
from
db_restaurant_basic as b
left join
db_restaurant_detail as d
on b.member_id = d.member_id
left join
db_category as c
on d.cat_id = c.cat_id
left join
db_subcategory as sub
on d.subcat_id = sub.subcat_id
left join
db_special_images as sl
on d.day_id = sl.day_id
and d.member_id = sl.member_id
where
b.city = '2'
and d.day_id = '3'
and c.special = '2'
and b.status = 1
and sub.status = 1
and sl.date_from = ''
and sl.date_to = ''
ORDER BY
b.member_id DESC
我该如何解决这个错误?
最佳答案
你应该只在查询的末尾分配顺序,而不是在每个选择中
并为不同表中具有相同名称的列使用适当的别名
select
b.member_id as b_member_id
,b.rest_name
,b.city
,b.proviance
,b.postal
,b.address
,b.country
,b.person
,b.mobile
,b.url
,b.status
,b.premium
,b.image
,b.business_phone_no
,b.email
,b.multiple_image
,b.latitude
,b.longitude
,b.quadrant
,d.member_id as d_member_id
,d.day_id
,d.cat_id
,d.subcat_id
,d.comment
,d.city
,d.special_images
,c.cat_id
,c.special
,sub.subcat_id
,sub.subcat_name
,sub.status
,sl.day_id
,sl.member_id
,sl.date_from
,sl.date_to
from db_restaurant_basic as b
left join db_restaurant_detail as d on b.b_member_id=d.d_member_id
left join db_category as c on d.cat_id=c.cat_id
left join db_subcategory as sub on d.subcat_id=sub.subcat_id
left join db_special_images as sl on d.day_id=sl.day_id and d.member_id=sl.member_id
where b.city='2'
and d.day_id='3'
and c.special='2'
and sl.date_from <='2016-10-26'
and sl.date_to >= '2016-10-26'
and b.status=1
and sub.status=1
and sl.date_from !=''
and sl.date_to !=''
UNION ALL
SELECT
b.member_id
,b.rest_name
,b.city
,b.proviance
,b.postal
,b.address
,b.country
,b.person
,b.mobile
,b.url
,b.status
,b.premium
,b.image
,b.business_phone_no
,b.email
,b.multiple_image
,b.latitude
,b.longitude
,b.quadrant
,d.member_id
,d.day_id
,d.cat_id
,d.subcat_id
,d.comment
,d.city
,d.special_images
,c.cat_id
,c.special
,sub.subcat_id
,sub.subcat_name
,sub.status
,sl.day_id
,sl.member_id
,sl.date_from
,sl.date_to
from db_restaurant_basic as b
left join db_restaurant_detail as d on b.member_id=d.member_id
left join db_category as c on d.cat_id=c.cat_id
left join db_subcategory as sub on d.subcat_id=sub.subcat_id
left join db_special_images as sl on d.day_id=sl.day_id and d.member_id=sl.member_id
where b.city='2'
and d.day_id='3'
and c.special='2'
and b.status=1
and sub.status=1 a
nd sl.date_from =''
and sl.date_to =''
ORDER BY b_member_id DESC
关于php - 使用 PHP 和 MySQL 连接多个表时出现 SQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40191561/