這裏是計算不同水果(果實的總數)的半簡單的方式。
SELECT COUNT(DISTINCT LEFT(`name`, LOCATE("Color:", `name`)-1)) as total_fruits
FROM exampe_table;
說實話你想正常化你的數據庫..你可以添加另一個表來匹配顏色,甚至重做這個表並添加另一列。這將是對一個側面說明這樣做
CREATE TABLE fruits_n_colors
(`id` int, `name` varchar(255), `color` varchar(255))
SELECT id,
SUBSTRING_INDEX(Name, ' Color: ', 1) as name,
SUBSTRING_INDEX(Name, ' Color: ', -1) as color
FROM exampe_table
ORDER BY id;
DEMO
如果您想保留目前的表,那麼你可以改變一個最簡單的方式,然後更新,像這樣
ALTER TABLE exampe_table
ADD COLUMN `fruit` VARCHAR(55),
ADD COLUMN `color` VARCHAR(55);
UPDATE exampe_table et,
(
SELECT
id,
SUBSTRING_INDEX(Name, ' Color: ', 1) AS fruit,
SUBSTRING_INDEX(Name, ' Color: ', -1) AS color
FROM exampe_table
)t
SET et.fruit = t.fruit, et.color = t.color WHERE et.id = t.id;
ALTER TABLE exampe_table
DROP COLUMN `Name`;
ANOTHER DEMO
爲什麼不只是'ORDER BY Name ASC' ?? –
,因爲我最終會在水果總數後排序。 –
即使如此,不知道爲什麼正則表達式順序會與正常順序不同。我很好奇,如果您可以提供一些數據我想測試它:) –