两次使用子查询的MySQL查询

标签 mysql

我有这个问题

SELECT itemID, locationParentID, locationID, categoryParentID, categoryID, itemTitle, itemDetails, itemAttributes, itemPictures, itemFeatured, itemSpotlight, itemAdded 
FROM items 
WHERE locationID NOT IN
    (SELECT locationID 
    FROM sites_locations 
    WHERE siteID != 2) AND items.siteID IN('1,2') AND itemStatus = '1' 
    AND itemAdded > '1356048000'

它工作正常但是当我执行这个查询时它失败了

SELECT itemID, locationParentID, locationID, categoryParentID, categoryID, 
itemTitle, itemDetails, itemAttributes, itemPictures, itemFeatured, itemSpotlight, itemAdded FROM items 
WHERE locationID NOT IN
    (SELECT locationID 
     FROM sites_locations WHERE siteID != 2) 
     AND categoryID NOT IN (SELECT categoryID FROM sites_categories 
     WHERE siteID != 2) AND items.siteID IN('1,2') AND itemStatus = '1' 
     AND itemAdded > '1356048000' 

这里的区别是我添加了子句

AND categoryID NOT IN(SELECT categoryID FROM sites_categories 
WHERE siteID != ".$cfg['site']['siteID'].") 

知道为什么这行不通吗?

或者更好的是,一个 Join Query 来帮助优化它。

sites_categories的表结构,数据在 enter image description here

items的表结构,数据在 enter image description here

sites_locations 的表结构 enter image description here

位置表结构,数据在 enter image description here

提前致谢。

最佳答案

试试这个

SELECT i.itemID, i.locationParentID, i.locationID, i.categoryParentID, i.categoryID, 
i.itemTitle, i.itemDetails, i.itemAttributes, i.itemPictures, i.itemFeatured, i.itemSpotlight, i.itemAdded 
FROM    items i,  sites_locations sl, sites_categories sc  
WHERE i.locationID = sl.locationID 
AND i.categoryID = sc.categoryID   
AND i.siteID = 1 AND i.itemStatus = '1' 
AND i.itemAdded > '1356048000'

它可能有一些错误或与列名相关的错误请更正这些错误

关于两次使用子查询的MySQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15016118/

相关文章:

sql - MySQL 从另一个具有重复 ID/数据的表中获取数据

php - 使用 PHP 从 MySQL 数据库中提取 ID 号

php - 如何限制一段时间的mysql_array?

PHP MYSQL 查询问题页面无法加载

mysql - 我应该如何存储类似的实体 - 在一个表或多个表中?

c# - 字段中的最大值作为条件

mysql - 进一步了解此查询

python - 如果安装了多个 Python,MacPorts 如何知道为哪一个安装 MySQLdb?

mysql - 将数据保存在多个文本行与 blob 上,哪个效果更好?

MySQL WHERE 与 IF 条件