mysql使用select进行左连接

w8biq8rn  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(402)

我只是想知道我能提出这样的问题吗?

SELECT
  t1.id,
  t1.name
FROM t1
LEFT JOIN t2 ON t2.id = (SELECT id FROM t3 WHERE t1.address LIKE 'street%' ORDER BY name ASC)
ORDER BY name DESC

这是因为我想将更复杂的查询添加到 LEFT JOIN 排序和排序以及一些依赖于另一个表的语句。。谢谢!
u、 p.d。

SELECT * FROM t3 WHERE t1.address LIKE CONCAT(address,'%') ORDER BY LENGTH(address) DESC

实际上,我想把这个查询写成 LEFT JOIN 子查询( ORDER BY 万一 LIKE 有道理!)。

f87krz0w

f87krz0w1#

理论上你可以这么做。
在join语句中编写子查询除了像where条件一样过滤两个表的笛卡尔积之外没有任何效果。但是这样写查询毫无意义,因为我们不知道您使用它的上下文。
上面的查询可以用更简洁的方式编写,如下所示:

SELECT
  t1.id,
  t1.name
FROM t1, t2
WHERE t2.id in (SELECT id FROM t3 WHERE address LIKE 'street%') 
ORDER BY name DESC

它将生成与您提供的查询相同的结果集

相关问题