这是我的查询,但不起作用
SELECT p.pID
FROM CommunityStoreProducts p
JOIN CommunityStoreProductAttributeValues pav
ON p.pID = pav.PID
WHERE (
(pav.akID = 62)
AND (pav.avID = 12313)
)
AND (
(pav.akID = 64)
AND (pav.avID = 12315)
)
AND (
(pav.akID = 65)
AND (pav.avID = 12316)
)
我也试着用这样的方式回答问题:
SELECT p.pID FROM CommunityStoreProducts p INNER JOIN CommunityStoreProductAttributeValues pav ON p.pID = pav.PID WHERE (pav.akID = 62) AND (pav.avID = 12313)
SELECT p.pID FROM CommunityStoreProducts p INNER JOIN CommunityStoreProductAttributeValues pav ON p.pID = pav.PID WHERE (pav.akID = 64) AND (pav.avID = 12315)
SELECT p.pID FROM CommunityStoreProducts p INNER JOIN CommunityStoreProductAttributeValues pav ON p.pID = pav.PID WHERE (pav.akID = 65) AND (pav.avID = 12316)
所有3个查询都运行良好并返回值。当我们将这个3合并为1查询时,它不起作用。
仅供参考:1个产品满足所有3个条件
第一个问题有错吗?
谢谢。
4条答案
按热度按时间xsuvu9jc1#
无论何时对具有多个条件的同一字段执行操作,请使用或而不是and。
omjgkv6w2#
我正在处理一个非常复杂的产品过滤器,所以我不能使用“in”或“or”操作符。现在我把问题改成这样对我有用
我不知道它是否正确,但它对我起了作用。谢谢你们的回复
ca1c2owp3#
如果必须使用多个“或”,可以用“in”条件替换它们。
ifmq2ha24#
我没有看到关于这个查询的任何语法错误,但是它不会返回任何值。不可能有一个记录
akID
同时等于62、64和65。如果要返回所有此类记录,请使用OR
操作员: