我正在加入兩個表,tab_usuarios(用戶)和 tab_enderecos(地址)。
tab_usuarios 結構:
| id_usuario | 名稱 | 烏蘇里奧 |
|---|---|---|
| 1 | 管理員 | 行政 |
| 2 | 新烏蘇亞里奧 | 睪丸 |
| 3 | 若昂席爾瓦 | 焦 |
tab_enderecos 結構:
| id_endereco | id_usuario | 殺戮 | uf |
|---|---|---|---|
| 2 | 1 | 殺戮 | SP |
| 20 | 2 | 洛雷娜 | SP |
| 22 | 2 | 洛雷娜 | SP |
| 24 | 3 | 坎皮納斯 | SP |
| 28 | 4 | 洛雷娜 | SP |
我有這個簡單的查詢,它給我帶來了以下結果:
Select
u.id_usuario,
u.usuario,
u.nome,
e.id_endereco,
e.cidade,
e.uf
From
tab_usuarios u Left Join
tab_enderecos e On u.id_usuario = e.id_usuario
| id_usuario | 烏蘇里奧 | 名稱 | id_endereco | 殺戮 | uf |
|---|---|---|---|---|---|
| 1 | 行政 | 管理員 | 2 | 殺戮 | SP |
| 2 | 用戶 2 | 新烏蘇亞里奧 | 22 | 洛雷娜 | SP |
| 2 | 用戶 2 | 新烏蘇亞里奧 | 20 | 洛雷娜 | SP |
| 3 | 焦 | 若昂席爾瓦 | 24 | 坎皮納斯 | SP |
| 4 | 睪丸 | 法比奧 | 28 | 洛雷娜 | SP |
我想要的是,比如對于id_usuario = 2,我只想帶上id_endereco = 20,也就是已經插入資料庫的第一個地址。
我和 min 和其他幾個人一起試過。
uj5u.com熱心網友回復:
這應該可以做到,假設你有 MySql 8.0 而不是一些古老的 5.x 版本:
SELECT *
FROM (
SELECT u.id_usuario, u.usuario, u.nome, e.id_endereco, e.cidade, e.uf,
row_number() over (partition by u.id_usuario order by e.id_endereco) rn
FROM tab_usuarios u
LEFT JOIN tab_enderecos e On u.id_usuario = e.id_usuario
) t
WHERE rn = 1
在這里看到它的作業:
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=c506baf8157f82390bb335d074e7614c
uj5u.com熱心網友回復:
我還沒有測驗,但以下應該作業
Select
u.id_usuario,
u.usuario,
u.nome,
e.id_endereco,
e.cidade,
e.uf
From
tab_usuarios u Left Join
tab_enderecos e On u.id_usuario = e.id_usuario
Order by e.id_endereco asc
Limit 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/474808.html
