我正在尝试使用select语句插入。但是,我需要使用排名等式来排序子选择结果。如果我创建一个别名,它会抛出列数。我可以用某个方程式以某种方式订购我的结果吗?
INSERT INTO draft
( fk_contrib_id , end_time )
SELECT pk_contrib_id, UNIX_TIMESTAMP(), (X+Y+Z) AS ranking
FROM contrib
ORDER BY ranking DESC
LIMIT 1
我需要'排名'列进行排序,但如果我这样做,则插入列的列数已关闭。我必须为此使用两个查询吗?
答案 0 :(得分:1)
您可以直接更改查询以直接使用ORDER BY
子句中的表达式,如下所示:
INSERT INTO draft
( fk_contrib_id , end_time )
SELECT pk_contrib_id, UNIX_TIMESTAMP()
FROM contrib
ORDER BY (X+Y+Z) DESC
LIMIT 1
答案 1 :(得分:0)
从SELECT列表中删除表达式。并使用ORDER BY子句中的表达式。
ORDER BY X+Y+Z
对于不在SELECT列表中的ORDER BY表达式,它是完全有效的。