让我们考虑一个虚构的例子
SELECT id, name, score.score FROM
someTable,
(select someTableId, count(*) as score FROM SecondTable GROUP BY someTableId) as score
WHERE score.someTableId == id
ORDER BY score.score DESC
现在假设我有一个计算得分的后端,我希望删除子查询并插入自己的数据。我想知道怎么做。
我想做这样的事情(这是个问题,因为下面的不起作用):
SELECT id, name, score.score FROM
someTable,
((12,324), (1, 342)) as score(id, score)
WHERE score.someTableId == id
ORDER BY score.score DESC
下面是子查询的外部数据替换示例:
SELECT * FROM users WHERE id IN (SELECT user_id FROM posts WHERE thread_id = 12 GROUP BY user_id);
不带子查询和外部数据:
SELECT * FROM users WHERE id IN (1,2,3);
最佳答案
如果我理解正确:
SELECT id, name, score.score FROM
someTable,
(SELECT 12 as someTableId,324 as score UNION ALL SELECT 1, 342 <UNION ALL....>) as score(id, score)
WHERE score.someTableId == id
ORDER BY score.score DESC
这是唯一可以做到的方法,它实际上并不替换子查询,但它替换了表中的select,如果这正是您想要的,它可以提高性能。
在MySQL中,当您只想获取伪数据时,不需要像指定一个伪表那样指定一个
from
子句。关于mysql - 从MySQL中的外部数据中选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36406815/