我试图弄清楚为什么我不能在mysql查询中运行多个AND
条件。
基本上这是我的代码:
SELECT id, category_name, url, category_name_unedit FROM mytable WHERE category_name='Girls Clothes' AND category_name='Boys Clothes' GROUP BY category_name
上面的代码没有返回任何东西,但当我像这样单独运行代码时:
SELECT id, category_name, url, category_name_unedit FROM mytable WHERE category_name='Girls Clothes' GROUP BY category_name
或者像这样:
SELECT id, category_name, url, category_name_unedit FROM mytable WHERE category_name='Boys Clothes' GROUP BY category_name
那么它工作得很好!
这是一个如此基本的问题,不幸的是我不知道如何解决它
有人能就这个问题提出建议吗?
这是因为查询的逻辑关闭了。如果你仔细想想,你不可能有一个类别名称是Girls Clothings AND Boys Clothing。但是,您可以得到一个名称为Girls Clothings或Boys Clothing的结果。
查询应该看起来像:
SELECT id,
category_name,
url,
category_name_unedit
FROM mytable
WHERE category_name='Girls Clothes'
OR category_name='Boys Clothes'
GROUP BY category_name
我猜您想要同时属于这两类的url。如果是:
SELECT url
FROM mytable
WHERE category_name IN ('Girls Clothes', 'Boys Clothes')
GROUP BY url
HAVING COUNT(*) = 2;
如果您只想检查其中一个类别,那么在查询中使用IN
(或OR
)。
SELECT id, category_name, url, category_name_unedit FROM mytable WHERE category_name='Girls Clothes' AND category_name='Boys Clothes' GROUP BY category_name
因为一个项目不可能有2个category_name
s。
如果它是"女孩的衣服"还是"男孩的衣服",你可能打算找到它。在这种情况下,您将使用OR而不是AND。
SELECT id, category_name, url, category_name_unedit FROM mytable WHERE category_name='Girls Clothes' OR category_name='Boys Clothes' GROUP BY category_name