选择列的所有前面的列值

时间:2018-05-19 06:45:19

标签: mysql sql

我有一个产品表

Start    End
 A        M
 M        T
 T        F

我需要获取输入值的所有前面的值。例如,如果输入为T,则查询应返回A,M。如果输入为M,则应返回A.对于F,输出应为A,M,T。我已尝试自联接但无法获得结果

2 个答案:

答案 0 :(得分:1)

答案不是很多,但评论太长了......

(MySQL 8.0除外)MySQL没有内置的递归。相反,选项包括:

  • 尽可能多地将表格连接到自己
  • 切换到其他模型(例如Nested Set
  • 在应用程序级别处理递归(例如,使用一点PHP)

以下是第一个选项的示例:

http://sqlfiddle.com/#!9/355414/4

答案 1 :(得分:0)

您可以添加订单列以标识前面的列。例如primary key喜欢id也会起作用。之后,您可以执行类似

的查询
SELECT GROUP_CONCAT(start) preceding_val FROM table_name WHERE id < (SELECT id FROM table_name WHERE end=your_value)

这将为您提供一行,其中包含您给定结束值的所有前面的起始值逗号。