php - 有没有办法绕过子查询中的重复表?

标签 php mysql

请注意,我正在为我的主查询和子查询调用和连接相同的表。

现在我的实际查询使用了更多类似的子查询。

有没有一种方法可以从主查询中调用子查询字段,从而无需在子查询中重用相同的连接表?我想在不牺牲速度的情况下提高效率。

SELECT tb1.id, tb1.title,

(SELECT tb1.title 
FROM table1 AS tb1
JOIN table2 AS tb2 ON tb2.id = tb1.id 
LEFT JOIN table3 AS tb3 ON tb2.id = tb3.id 
WHERE tb1.id > '123' LIMIT 1) AS next

FROM table1 AS tb1
JOIN table2 AS tb2 ON tb2.id = tb1.id 
LEFT JOIN table3 AS tb3 ON tb2.id = tb3.id
WHERE tb1.id='123'

最佳答案

您可以使用 View抽象该查询。

CREATE VIEW tbl_view AS 
SELECT 
tb1.id as id,
tb1.title as title  
FROM table1 AS tb1
JOIN table2 AS tb2 ON tb2.id = tb1.id 
LEFT JOIN table3 AS tb3 ON tb2.id = tb3.id

较短的查询是

SELECT 
  id, 
  title,
  (SELECT title FROM tbl_view
  WHERE id > '123' LIMIT 1) AS next
FROM 
  tbl_view
WHERE id='123'

关于php - 有没有办法绕过子查询中的重复表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591781/

相关文章:

PHP:将 ID 发送到 HTML 按钮以查看数据库行

c# - 如何在 MYSQL C# 中填充 DataGridView 单元格?

c# - Mysql WHERE LIKE 与 RadCombobox.Text

php - 如何从 WHERE 子句导出 MySQL 表的某些行?

php - url 中的 htaccess rewriterule 2 参数

php - 用 PHP 学习 OO

php - 如何从多个 SQL 表中获取值并在 html/php 表中显示?

MYSQL 使用 EBCDIC 代替 ASCII 进行排序

php - 将列类型更改为 tinyInteger

php - 如何在 mysql 和 laravel 中处理数百万条记录