1
我有一个表像这样与单列作为结果,对多个变量赋值
+----+------+
| ID | Name |
+----+------+
| 0 | Foo |
| 1 | Bar |
+----+------+
基于我想根据每一行来计算的排名表中的行,让喜欢
SELECT *, [calculation] AS ranking
FROM table
ORDER BY ranking DESC
查询
将返回类似
+----+------+---------+
| ID | Name | Ranking |
+----+------+---------+
| 0 | Bar | 3 |
| 1 | Foo | 1 |
+----+------+---------+
我的问题是,我需要每行执行多个任务W¯¯没有得到更多的专栏;基本上类似
@ranking:= 0
IF(Name LIKE $firstTerm, @ranking := @ranking + 1, @ranking := @ranking)
IF(Name LIKE $secondTerm, @ranking := @ranking + 1, @ranking := @ranking)
IF(Name LIKE $thirdTerm, @ranking := @ranking + 1, @ranking := @ranking)
对于每一行,使得在端部余为每个条目是0,1,2或3个作为一个额外的列在我的表
编辑:在理论动态生成的像
SELECT *
FROM table
ORDER BY SUM(
CASE
WHEN
(NAME LIKE $firstTerm AND NAME NOT LIKE $secondTerm AND NAME NOT LIKE $thirdTerm)
OR (NAME NOT LIKE $firstTerm AND NAME LIKE $secondTerm AND NAME NOT LIKE $thirdTerm)
OR (NAME NOT LIKE $firstTerm AND NAME NOT LIKE $secondTerm AND Name LIKE $thirdTerm) THEN 1
WHEN (Name LIKE $firstTerm AND Name LIKE $secondTerm AND Name NOT LIKE $thirdTerm)
OR (Name NOT LIKE $firstTerm AND Name LIKE $secondTerm AND Name LIKE $thirdTerm) THEN 2
WHEN (Name LIKE $firstTerm AND Name LIKE $secondTerm AND Name LIKE $thirdTerm) THEN 3
ELSE 0
) DESC;
会按预期工作,但你可以想象,如果我们有超过3个术语,这将是怎么回事!
告诉我们更多关于计算 – Strawberry
这应该是多个LIKE比较的,因此,它有更多的比赛,越高它的排名 – RoiEX
@Strawberry我编辑我的问题是更正确的(加了LIKE语句例子) – RoiEX