MySQL用逗号破坏列值

时间:2017-02-07 07:22:38

标签: python mysql pymysql

我通过Python(pymysql)查询MySQL数据库(fintech_16)以获取列(Trend)的UNIQUE值。当我运行以下查询时:

cursor.execute ("SELECT DISTINCT `Trend` FROM `fintech_16` ")
cursor.fetchall()

我得到了以下结果:

((u'Investments',),
 (u'Expansion',),
 (u'New Products',),
 (u'Collaboration',),
 (u'New Products,Investments',),
 (u'New Products,Expansion',),
 (u'Expansion,Investments',),
 (u'New Products,Collaboration',),
 (u'Regulations',),
 (u'Investments,New Products',),
 (u'Investments,Expansion',),
 (u'Collaboration,Investments',),
 (u'Expansion,New Products',),
 (u'Collaboration,New Products',))

现在。由于一些ID有多个趋势,因此DB将它们视为一个单独的趋势。

我应该如何调整我的查询以仅获得5个趋势(投资,扩展,新产品,协作,法规)及其计数?

虽然这些只有5,但我可以使用LIKE %Investments%手动获取计数,但我希望代码/查询能够完成。

TIA

1 个答案:

答案 0 :(得分:-1)

第一种方法是使用SET数据类型来定义确切的值,您有5 - ['新产品','投资','扩展'...]。

然后你可以使用FIND_IN_SET函数来计算你需要的值:

SELECT COUNT(*) FROM `fintech_16` WHERE FIND_IN_SET('New Products', `Trend`) > 0;