如何调试失败的SELECT语句?

如何调试失败的SELECT语句?

问题描述:

有没有简单的解释为什么这个查询不起作用,它的替代方法是什么?如何调试失败的SELECT语句?

SELECT * FROM items WHERE item_category = 'shirts' 
    AND WHERE item_category = 'pants' 

我必须保持条款:

SELECT * FROM items 

,因为我需要所有的被选*以后使用的数据。

+1

您有一个额外的'WHERE',但这不会返回任何结果。 'item_category'永远不能等于'衬衫'和'裤子'。 – Chris

+2

@Chris也许他有连衣裤或onesies :-) – 2016-08-17 02:16:46

不包括WHERE两次:

SELECT * FROM items WHERE item_category = 'shirts' OR item_category = 'pants' 

你也不想指定“AND”,因为不会有一个点,两个item_categoryshirtspants在同一时间。

您有两个WHERE关键字;第二个是没有必要的 - 它会产生一个错误。

然而,你应该简化查询使用IN

SELECT i.* 
FROM items i 
WHERE i.item_category IN ('shirts', 'pants'); 
+0

严格来说,该查询不等同于OP的错误使用'AND'的查询。 (这可能是OP _wants_,尽管如此。) – Chris

+0

忘记'IN()'子句。很好的选择+快艇 – FrankerZ