我昨天问了一个关于如何将多个结果输入一个字段的问题,并给出了答案GROUP_CONTACT().
我把它放到我的代码中,它工作正常.我需要为两个字段执行此操作,因此我现在已经开始在相同的sql语句中使用它两次.不幸的是,它用逗号拉回第二个字段的空列表,我不太清楚为什么.
这是我的示例产品数据:
pid || prod 1 || top 2 || sweater
这是我的样本库存数据(有些库存没有两种尺寸,例如腰围和胸围):
sid || size1 || size2 || pid 1 || M || || 1 2 || L || || 1 3 || XL || || 1 4 || L || || 2 5 || XL || || 2
这是我的代码:
SELECT p.id,GROUP_CONCAT(s.size1) size1,GROUP_CONCAT(s.size2) size2,p.prod FROM products p JOIN stock s ON s.prodid = p.id
这是它应该带来的:
pid || size1 || size2 || prod 1 || M,L,XL || || top 2 || L,XL || || sweater
这就是它实际带来的:
pid || size1 || size2 || prod 1 || M,XL ||,|| top 2 || L,XL ||,|| sweater
我已经检查过是否有空间或任何尺寸2的东西,那里什么都没有.
我做了这个查询,产品按照我的预期回来了:
SELECT size1,size2 FROM stock WHERE pid = 1 AND size2 = ""
当我做这个查询时,什么都没有回来:
SELECT size1,size2 FROM stock WHERE pid = 1 AND size2 IS NULL
我知道GROUP_CONCAT()将忽略NULL结果,但我需要做一些事情来阻止GROUP_CONTACT()显示一个空的逗号分隔列表,当它只是“”而不是NULL.
SELECT p.id,GROUP_CONCAT(if (s.size2 ='',null,s.size2)) as size2,p.prod FROM products p JOIN stock s ON s.prodid = p.id