我的下一个数据库表将更优化地设置。不幸的是,这已经设置好了,其中一列[数据]包含复选框数组值,这些值通过以下方式保存:
value 1|~|value 1 value 2|~|value 2 value 3|~|value 3
我知道这不是最佳选择。 我需要的是一个mysql查询,该查询仅选择|〜|前面的[data]列中的值。基本上认为我需要选择唯一的奇数。
任何向我指出正确方向的帮助都将不胜感激。我在查询中尝试了if语句,但它不起作用。当然我误删了。
答案 0 :(得分:1)
我需要的是仅选择 |〜|前面[data]列中的值。
请注意|~|
之前的数字必须唯一。
它不会两次显示相同的数字。
查询
SELECT
DISTINCT
SUBSTRING (
record_data.column
, LOCATE('|~|', record_data.`column` , number_generator.number) - 1
, 1
) AS number
FROM (
SELECT
@row := @row + 1 AS number
FROM (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) record_1
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) record_2
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) record_4
CROSS JOIN (
SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
) record_5
CROSS JOIN (
SELECT @row := 0
) AS init_user_params
) AS number_generator
CROSS JOIN (
SELECT
*
FROM (
SELECT 'value 1|~|value 1 value 2|~|value 2 value 3|~|value 3' AS `column`
) AS record
) AS record_data
WHERE
LOCATE('|~|', record_data.`column` , number_generator.number) <> 0
结果
| number |
| ------ |
| 1 |
| 2 |
| 3 |