MySQL - 在没有关系的多个表上使用FIND_IN_SET

时间:2016-10-06 12:30:22

标签: mysql select find-in-set

我的数据库结构如下所示: 数据库名称:产品

id ptype
1  Cups
2  Shirts
3  Cups
4  Mugs
5  Fabric
6  Mat

数据库名称:类别

id category ptype
1  Clothes  Pants, Shirts, Tshirts
2  Other    Mugs, Cups

我想获得一个不同的ptype(产品表)列表,这些列表已经没有在类别表的ptype中列出

所以结果将是

ptype
Fabric
Mat

我尝试使用以下mysql select查询,但它似乎无法正常工作

SELECT p.ptype, c.ptype, FIND_IN_SET(p.ptype,c.ptype) FROM products as p, categories as c WHERE FIND_IN_SET(p.ptype,c.ptype) < 1

对于所有产品ptypes表,它将FIND_IN_SET的值返回为0。

1 个答案:

答案 0 :(得分:1)

删除// reading png bytes from file FILE *fp = fopen("./test/resources/RGBA_8bits.png", "rb"); // get file size from file info struct stat finfo; fstat(fileno(fp), &finfo); pngDataLength = finfo.st_size; pngData = malloc(sizeof(unsigned char)*pngDataLength); if( fread(pngData, 1, pngDataLength, fp) != pngDataLength) { fprintf(stderr, "%s: Incorrect number of bytes read from file!\n", __func__); fclose(fp); free(pngData); return; } fread(NULL, 1, 1, fp); if(!feof(fp)) { fprintf(stderr, "%s: Not the whole binary file has been read.\n", __func__); fclose(fp); free(pngData); return; } fclose(fp); 字段中逗号后面的空格以使查询有效。 find_in_set()将指针与逗号分隔值列表进行比较,并将逗号后的空格视为其搜索的字符串的一部分,因此如果搜索不包含空格的字符串,则不会找到匹配项。