我在MySQL中嵌套选择有问题。
这个有效,但我需要两个。
示例:
SELECT `a`.`title` , `a`.`askprice` , `a`.`picture`
, `a`.`description` , `a`.`userid` , `a`.`id`
FROM (
`mm_ads_fields_values` AS afv
)
LEFT JOIN `mm_ads` AS a ON `a`.`id` = `afv`.`aid`
WHERE `afv`.`value` = '38'
AND `a`.`category` = '227'
AND `a`.`status` =1
AND a.id
IN (
SELECT a.id
FROM mm_ads AS a
LEFT JOIN mm_ads_fields_values AS afv ON afv.aid = a.id
WHERE afv.value = '2913'
)
ORDER BY `id` DESC
LIMIT 20
这个有效。但我需要像这样的SQL语句:
SELECT `a`.`title` , `a`.`askprice` , `a`.`picture`
, `a`.`description` , `a`.`userid` , `a`.`id`
FROM (
`mm_ads_fields_values` AS afv
)
LEFT JOIN `mm_ads` AS a ON `a`.`id` = `afv`.`aid`
WHERE `afv`.`value` = '38'
AND `a`.`category` = '227'
AND `a`.`status` =1
AND a.id
IN (
SELECT a.id
FROM mm_ads AS a
LEFT JOIN mm_ads_fields_values AS afv ON afv.aid = a.id
WHERE afv.value = '2913'
)
AND a.id
IN (
SELECT a.id
FROM mm_ads AS a
LEFT JOIN mm_ads_fields_values AS afv ON afv.aid = a.id
WHERE afv.value = '51'
)
ORDER BY `id` DESC
LIMIT 20
这一个,最后一个,将无法运作。它的装载和装载从来没有发生任何事情。
我做错了什么?
问候,马里奥
抱歉我的英语不好..
答案 0 :(得分:0)
Glib回答:第二个IN语句不应该使用OR代替AND吗? (编辑:并使用正确的运算符优先级。)
...
AND
( a.id
IN (
SELECT a.id
FROM mm_ads AS a
LEFT JOIN mm_ads_fields_values AS afv ON afv.aid = a.id
WHERE afv.value = '2913'
)
OR a.id
IN (
SELECT a.id
FROM mm_ads AS a
LEFT JOIN mm_ads_fields_values AS afv ON afv.aid = a.id
WHERE afv.value = '51'
)
)
...