例如,如果我在一个名为RANDOM的数据库中有一个列,其中包含以其结尾符号区分的随机信息位:
RANDOM
1. 12312 KM, 201 M, 1213 H, 101029 DOLLARS
2. 231 KM, 2351 M, 754 H, 345 DOLLARS, 120 L, 1201 FT
3. 2324 M
有些条目有其他杂项但重要的数据点,而有些条目我只有一两个。 我想只使用列RANDOM中的数据进行排序。
$RESULT = mysqli_query($CON, "SELECT * FROM TABLE WHERE RANDOM CONTAINS 'M' ORDER BY 'NUMBER BEFORE M'");
因此,这会找到包含' M'然后按照' M'前面的数字排序。与KM或DOLLARS等其他变量类似。这是否可以在单个语句中使用纯MySQL?
答案 0 :(得分:0)
如果我理解了这个问题,那么你可以在一行中完成,只需要一些操作,因为你的数据都在一列中。
SELECT * FROM
(SELECT *, CAST(LEFT(RANDOM, INSTR(RANDOM, '.') - 1) AS UNSIGNED) AS ORD_NUMBER
FROM `test_table`
) DERIVED_TABLE ORDER BY ORD_NUMBER DESC
基本上我们通过使用INSTR查找第一个来获取数字。 (假设这是所有项目的格式)然后为了安全起见我们将其转换为整数。使用派生表返回数据,然后我们对动态计算的ord_number进行排序,这是过滤的结果。希望有所帮助。
所以使用这个原则你可以过滤掉你喜欢的颜色:)
但是也许重新考虑db Design就像做任何类型的查询一样,这意味着你的RDBMS可能没有正确设置(带有该值的简单解决方案新列:))
答案 1 :(得分:0)
你的分类需要2次阿司匹林头痛 ORDER BY substr(' str',locate(str,a,b),locate(str,b,c))