MySQL。只计算我列值的一部分

MySQL。只计算我列值的一部分,mysql,sql,database,Mysql,Sql,Database,我有一个关于MySQL中的表的问题。为了更好地理解这一点,我宁愿让你看看。我有下表: CREATE TABLE IF NOT EXISTS `tip_masina` ( `id_tip` int(11) NOT NULL AUTO_INCREMENT, `marca` varchar(40) NOT NULL, `pret` int(11) NOT NULL, PRIMARY KEY (`id_tip`), UNIQUE KEY `marca` (`marca`) ) ENG

我有一个关于MySQL中的表的问题。为了更好地理解这一点,我宁愿让你看看。我有下表:

CREATE TABLE IF NOT EXISTS `tip_masina` (
  `id_tip` int(11) NOT NULL AUTO_INCREMENT,
  `marca` varchar(40) NOT NULL,
  `pret` int(11) NOT NULL,
  PRIMARY KEY (`id_tip`),
  UNIQUE KEY `marca` (`marca`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;


INSERT INTO `tip_masina` (`id_tip`, `marca`, `pret`) VALUES
(1, 'Chevrolet Impala', 8000),
(2, 'Chevrolet Camaro', 10000),
(3, 'Chevrolet Tahoe', 13000),
(4, 'Chevrolet Suburban', 12500),
(5, 'Chevrolet Cobalt', 4000),
(6, 'Dodge Charger', 14000),
(7, 'Dodge Avenger', 9000),
(8, 'Dodge Challenger', 6500),
(9, 'Dodge Dart', 3500),
(10, 'Dodge Durango', 3000),
(11, 'Ford Mustang', 7500),
(12, 'Ford Crown Victoria', 5000),
(13, 'Ford Focus', 4300),
(14, 'Ford Fiesta', 3700),
(15, 'Ford Escort', 1000);
START TRANSACTION;
ALTER TABLE tip_masina ADD model VARCHAR(60) AFTER marca;
ALTER TABLE tip_masina CHANGE marca company VARCHAR(60);
UPDATE tip_masina SET model = SUBSTRING_INDEX(company, ' ', -1);
ALTER TABLE tip_masina DROP INDEX marca;
UPDATE tip_masina SET company = SUBSTRING_INDEX(company, ' ', 1);
SELECT * FROM tip_masina;
我想从这个表中显示车辆类型和车辆数量,如:

marca      |  no_of_vehicles
Chevrolet          5
Dodge              5
Ford               5

有没有办法在不将列marca拆分为两列的情况下执行此操作?

这里有一个简单的方法,使用
substring\u index()


下面是一个简单的方法,使用
子字符串\u index()


最好将“marca”分成两列,以便更容易找到您想要的内容。然后,您将不需要任何特殊函数(例如子字符串索引)

编辑: 您可以使用以下代码:

编辑2: 现在它可以工作了(在mysql workbench上通过查询创建表进行测试):


最好将“marca”分成两列,以便更容易找到您想要的内容。然后,您将不需要任何特殊函数(例如子字符串索引)

编辑: 您可以使用以下代码:

编辑2: 现在它可以工作了(在mysql workbench上通过查询创建表进行测试):


是的,我的价值观比我在那个问题上发表的要多。下次我会更加小心,仔细考虑数据库,不要碰到这些问题。我为您添加了一个新的解决方案。现在你可以把你的车放在两个单独的栏里。是的,我的价值比我在那个问题上公布的要多。下次我会更加小心,仔细考虑数据库,不要碰到这些问题。我为您添加了一个新的解决方案。现在你可以把你的车分成两列。
START TRANSACTION;
ALTER TABLE tip_masina ADD model VARCHAR(60) AFTER marca;
ALTER TABLE tip_masina CHANGE marca company VARCHAR(60);
UPDATE tip_masina SET model = SUBSTRING_INDEX(company, ' ', -1);
ALTER TABLE tip_masina DROP INDEX marca;
UPDATE tip_masina SET company = SUBSTRING_INDEX(company, ' ', 1);
SELECT * FROM tip_masina;