在mysql中重用临时表

时间:2014-10-10 08:15:59

标签: mysql sql

我有这样的查询:

(SELECT id,content,userid FROM article WHERE type='A' LIMIT 10)
UNION ALL
(SELECT c.id,c.content,c.userid FROM comment AS c
JOIN (SELECT id,content,userid FROM article WHERE type='A' LIMIT 10) AS a
ON c.articleid = a.id)

如何重用而不是重新查询此临时表SELECT id,content,userid FROM article WHERE type='A' LIMIT 10

2 个答案:

答案 0 :(得分:0)

我将为您要重用的语句定义一个视图,并为其指定一个合适的名称。

答案 1 :(得分:0)

这种方式实现了你的要求。

SELECT 
   c.id,c.content,c.userid,
   a.id,a.content,a.userid
FROM comment AS c
   JOIN article AS a ON c.articleid = a.id
WHERE a.type='A'

# This will limit #comments + #articles, not usable
# Removing it means a lot of useless data being transferred
LIMIT 10

您将不得不使用多个查询。或者接受不会使用的数据传输。

此外,你必须过滤掉你会得到的双重文章