MySQL使用select for LEFT JOIN ON

时间:2018-04-18 06:41:36

标签: php mysql sql left-join

我想知道我可以提出这样的问题吗?

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 BYLIKE确实有意义!)。

1 个答案:

答案 0 :(得分:2)

理论上你可以这样做。

在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

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