MySQL SELECT女性不是男性

时间:2012-07-06 13:59:46

标签: php mysql

我的数据库中有一个名为类别的字段,其中包含服装店主题的类别(新品上市,热门卖家,男士,女士,儿童等)

我有一条记录:New Arrival,Men 我有第二个记录:新到货,女性

我如何查询数据库以选择女性或男性?

我已经厌倦了这个:SELECT * FROM products WHERE categories RLIKE [[:<:]]Men[[:>:]]'

这对男性有用,但对女性不起作用。

5 个答案:

答案 0 :(得分:4)

如果您实际存储“男性”或“女性”字样,那么您的数据库设置不正确

您应该使用链接表,让我们说categories将产品链接到类别。

然后你可以做类似的事情:

SELECT * FROM products p
JOIN categoriesToProducts ctp ON ctp.productId = p.productId
JOIN categories c ON c.categoryId = ctp.categoryId
WHERE c.categoryName = "Men"; 

答案 1 :(得分:1)

只需使用:

SELECT * FROM products WHERE categories LIKE 'Men%';
SELECT * FROM products WHERE categories LIKE 'Women%';

仅使用正确的%

答案 2 :(得分:1)

您可以使用find_in_set function,看一下这个例子

mysql> select * from fruits;
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select * from fruits where find_in_set('banana',fruit);
+-------------------------------+
| fruit                         |
+-------------------------------+
| banana, apple, orange, grapes |
+-------------------------------+
1 row in set (0.00 sec)

所以尝试类似:

SELECT * FROM products WHERE categories where find_in_set('men',categories)'

确保,之后的单词完全相同,没有额外的空格

答案 3 :(得分:-1)

您可能只想简化您的方法。

SELECT * FROM products WHERE categories = 'Men';
SELECT * FROM products WHERE categories = 'Women';

因为&#34;男人&#34;是#&#34; WoMEN&#34;这可能是你的SQL出现问题的原因吗?

但是,由于引起我注意,您的数据库可能包含更长的字符串,您也可以这样做。

SELECT * FROM products WHERE categories = 'New Arrival, Men';
SELECT * FROM products WHERE categories = 'New Arrival, Women';

答案 4 :(得分:-1)

由于您在选择“女性”时没有遇到任何问题,因此您可以使用以下查询解决问题:

SELECT * FROM products WHERE categories LIKE '% Men';

在字母“M”之前加上一个空格。