【发布时间】:2012-11-03 20:13:14
【问题描述】:
大家好,我有一个关于mysql查询的快速问题。
我正在尝试进行选择,但我不确定它是否可以完成 - 或者我是否做得对。
我有一个表,其中包含一个名为 ListeningMethod 的字段,其中包含来自逗号分隔数组值的值,这些值是从 html 复选框插入的。 有 5 个可能的条目,该字段可以包含所有复选框值,也可以不包含任何复选框值。
样本数据将与此类似:
NOLISTEN,RADIO,INTERNET,SATELLITE,MOBILE
我想做的是对数据进行排序,但要按计数进行。所以,如果“RADIO”出现 10 次,“MOBILE”出现 5 次,“SATELLITE”出现 3 次,间隔超过 10 条记录,那么搜索 100 条记录,它应该能够显示和排序那些提到的结果,“顺序by" 设置为顶部最常见的收听方法。
我试过试一试,但不太顺利。
有什么想法吗? 谢谢。
SELECT
ListeningMethod,
ListeningMethod REGEXP ("NOLISTEN") as ViewNOLISTEN,
ListeningMethod REGEXP ("RADIO") as ViewRADIO,
ListeningMethod REGEXP ("INTERNET") as ViewINTERNET,
ListeningMethod REGEXP ("SATELLITE") as ViewSATELLITE,
ListeningMethod REGEXP ("MOBILE") as ViewMOBILE
FROM VAT
我尝试添加更多,例如“COUNT(ViewRadio) CountRadio”,但它说该列不存在,所以我有点迷茫。
示例插入语句:
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('NOLISTEN,RADIO,INTERNET,MOBILE');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('INTERNET');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('NOLISTEN');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('INTERNET');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('INTERNET');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('RADIO');
INSERT INTO `VAT` (`ListeningMethod`) VALUES ('MOBILE');
>
【问题讨论】:
-
插入逗号分隔值是不可取的,而不是根据监听方法插入listenmethod为1,2,3,4,5,这样您就可以轻松使用order by获得最高的监听方法跨度>
-
如果你使用一个单独的表格,每行一个方法而不是逗号分隔的列表,这会容易得多。
-
嗨@Barmar,是的,在一个理想的世界里是的,但是我需要这个运行非常快并且没有时间。再次感谢。