在第二个查询的值中使用第一个查询的值

时间:2014-12-11 23:56:14

标签: php mysql sql mysqli

我有一张看起来像这样的表:

+---------+----------+
| post_id |   path   |
+---------+----------+
|       1 | 1/       |
|       2 | 1/2/     |
|       3 | 1/2/3/   |
|       4 | 1/2/3/4/ |
|       5 | 1/2/5/   |
+---------+----------+

然后我有一个类似于以下内容的查询:

SELECT post_id AS column_1,
       post_path
FROM posts
WHERE post_path REGEXP concat(?, '/[0-9]+/$') LIMIT 5
UNION
SELECT post_id AS column_2,
       post_path
FROM posts
WHERE post_path REGEXP concat(?, '/', column_1, '/[0-9]+/$') LIMIT 5

在最后一行,您会看到我使用column_1来引用第一个查询中的post_id,但是,这不起作用。

如何才能完成这项工作,以便我可以使用post_id当前所在的第二个查询中的第一个查询中的column_1

感谢。

1 个答案:

答案 0 :(得分:0)

使用@variable_name:=来使用所选列的当前数据,这是代码

SELECT @col:=post_id AS column_1,
   post_path
FROM posts
WHERE post_path REGEXP concat(?, '/[0-9]+/$') LIMIT 5
UNION
SELECT post_id AS column_2,
   post_path
FROM posts
WHERE post_path REGEXP concat(?, '/', @col, '/[0-9]+/$') LIMIT 5

@col您可以看到@col是您的变量,有关@col的更多定义,您可以在此处访问我的其他答案#1054 - Unknown column in 'field list'