SELECT
ListProperty.*,PropertyType.ptype as PType,PropertyType.category as PCategoryi,locations.location as PLocation
FROM
ListProperty,PropertyType,locations,ListPropertySortData
WHERE
(ListProperty.ptid=PropertyType.ptid AND ListProperty.locid=locations.locid)
AND ListProperty.lpid IN (SELECT lpid FROM ListPropertyMore WHERE ListProperty.locid LIKE '%12,18%')
AND ListPropertySortData.lpid=ListProperty.lpid
AND expdate>=CURDATE()
AND status='T';
我需要输出12和18的locid
答案 0 :(得分:1)
也许您可以像这样使用FIND_IN_SET
:
SELECT
ListProperty.*,
PropertyType.ptype as PType,
PropertyType.category as PCategoryi,
locations.location as PLocation
FROM
ListProperty,PropertyType,
locations,
ListPropertySortData
WHERE
(
ListProperty.ptid=PropertyType.ptid
AND ListProperty.locid=locations.locid
)
AND ListProperty.lpid IN
(
select
lpid
from
ListPropertyMore
WHERE FIND_IN_SET (ListProperty.locid, '12,18')
)
AND ListPropertySortData.lpid=ListProperty.lpid
AND expdate>=CURDATE() AND status='T'
参考:
答案 1 :(得分:0)
您可以使用OR运算符。
WHERE (ListProperty.locid like '%12%' OR ListProperty.locid like '%18%')
答案 2 :(得分:0)
对于locid
12和18,请使用GROUP BY
和HAVING
条款:
试试这个:
SELECT PropertyType.ptype as PType,PropertyType.category as PCategoryi,locations.location as PLocation
FROM ListProperty,PropertyType,locations,ListPropertySortData
WHERE (ListProperty.ptid=PropertyType.ptid AND ListProperty.locid=locations.locid)
AND ListProperty.lpid IN (select lpid from ListPropertyMore WHERE ListProperty.locid IN (12,18) )
AND ListPropertySortData.lpid=ListProperty.lpid
AND expdate>=CURDATE() AND status='T'
GROUP BY PropertyType.ptype,PropertyType.category,locations.location
HAVING COUNT(DISTINCT ListProperty.lpid)=2
答案 3 :(得分:0)
您可以更好地使用IN操作数;
AND ListProperty.lpid IN (select lpid from ListPropertyMore WHERE ListProperty.locid IN (12,18) )
但是对于你的方法,你已经倒退了,我会在开头和结尾添加逗号,因为你会得到部分匹配,其中添加的逗号使它更加明显:
AND ListProperty.lpid IN (select lpid from ListPropertyMore WHERE ',12,18,' LIKE CONCAT('%,',ListProperty.locid,',%' )
使用相同的CSV方案,Arion的答案比上面“手动”处理更容易。