gpt4 book ai didi

mysql - 如何使用 MySQL View 和 ORDER BY 子句?

转载 作者:行者123 更新时间:2023-11-29 06:53:43 25 4
gpt4 key购买 nike

问题 #1 - 如果表中的某个字段出现在表 2 中,如何创建表 1 的 View ,然后从 View 中排除该记录?

问题 #2 - 如何根据表 1 中的 id 按 DESC 顺序对结果进行排序。

SELECT table1.source_id
FROM table1
WHERE table1.source_id NOT IN (SELECT table2.source_id from table2)
ORDER BY table1.source_id DESC;

最佳答案

我建议您使用“反加入”模式。这是一个带有谓词的 LEFT JOIN,它排除了任何匹配的行,

SELECT t1.source_id
FROM table1 t1
LEFT JOIN table2 t2
ON t2.source_id = t1.source_id
WHERE t2.source_id IS NULL
ORDER
BY t1.source_id DESC

(如果 table1 和 table2 上都有索引且前导列为 source_id,则此语句的性能将最佳。)

另一种选择是使用 NOT EXISTS 谓词

SELECT t1.source_id
FROM table1 t1
WHERE NOT EXISTS
( SELECT 1
FROM table2 t2
WHERE t2.source_id = t1.source_id
)
ORDER
BY t1.source_id DESC

(MySQL 优化器也可以将其作为“反连接”运行,而不是作为依赖子查询运行;您需要检查 EXPLAIN 的输出以进行验证。)

在大型集合上,其中任何一个都比包含派生表的查询执行得更好,例如带有 NOT IN (subquery) 谓词的查询。

关于mysql - 如何使用 MySQL View 和 ORDER BY 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14008643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com