我想知道我可以提出这样的问题吗?
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
确实有意义!)。
答案 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
它将生成与您提供的查询相同的结果集