表结构
a:
| aid |
|---|
b:
| aid | name |
|---|---|
x:
| xid |
|---|
y:
| xid | aid | value |
|---|---|---|
SELECT a.aid,b.name FROM a join b on a.aid = b.aid
| aid | name |
|---|---|
| 1 | aaaa |
SELECT x.aid,y.value FROM x join y on x.xid = y.xid
| aid | value |
|---|---|
| 1 | bbb |
想得到结果,因为上面2个结果都有aid。
| aid | name | value |
|---|---|---|
| 1 | aaa | bbb |
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
把你的两条sql:
SELECT a.aid,b.name FROM a join b on a.aid = b.aid和SELECT x.aid,y.value FROM x join y on x.xid = y.xid继续作为子语句,连接起来。如果是等值连接只需要取其中一个的aid值就行了。full join可以用case语句进行选择看到表结构的时候,直接就可以:
SELECT b.aid, b.name, y.value FROM b INNER JOIN
yON b.aid = y.aid;然后如果题主确实是要连接a表和x表的话,跟前面的回答是正确的,不过sql有一两个小地方没写对:
SELECT tmpa.aid, tmpa.name, tmpb.value FROM
(SELECT a.aid,b.name FROM a JOIN b ON a.aid = b.aid) tmpa
INNER JOIN
(SELECT x.xid,y.aid,y.value FROM
xJOINyON x.xid = y.xid) tmpbON tmpa.aid=tmpb.aid;