[英]MySQL JOIN two tables and return multiple rows
我有兩張桌子。 “第一”表包含“第二”表的2個ID。 v2和v3是第二張表的ID。
首先 :
`id`, `mem`, `v2`, `v3`, `v2_amt`, `v3_amt`
1, 'test', 1, 2, '10', '20'
2, 'test2', 1, 2, '10', ''
第二 :
`id`, `name`
1, 'anna'
2, 'teena'
我加入的時候
SELECT f.mem, s.name
FROM `first` f
JOIN second s
ON f.v2 = s.id
AND f.v2_amt !=""
AND (f.v3 = s.id AND f.v3_amt !='')
WHERE f.id = '1'
GROUP BY s.id
有什么辦法可以合並兩個表以實現如下輸出?
`mem`, `name`
test, 'anna'
test, 'teena'
用於獲取第一個表的2個ID。
SELECT f.mem, s.name
FROM `first` f
JOIN second s
ON f.v2 = s.id
AND f.v2_amt !=""
AND (f.v3 = s.id AND f.v3_amt !='')
WHERE f.id = '2'
GROUP BY s.id
它應該返回,因為v3_amt似乎為空。
`mem`, `name`
test, 'anna'
您應該使用OR
。
SELECT f.mem, s.name FROM `first` f JOIN `second` s
ON f.v2 = s.id AND f.v2_amt !="" OR (f.v3 = s.id AND f.v3_amt !='')
WHERE f.id = '1'
您可以使用left join
和OR
對於這種情況
select ft.mem, st.name from first_table ft
LEFT JOIN second_table st ON (ft.v2 = st.id AND ft.v2_amt !="") OR (ft.v3 = st.id AND ft.v3_amt !="")
WHERE ft.id = '1'
如果v2上類似v3_amt =“”,則應在插入時清空v3列,然后嘗試執行此查詢
Select f.v2,f.v3,f.v2_amt,f.v3_amt,s.name from first as f join second as s on
(f.v2 = s.id OR f.v3 = s.id) and (f.v2_amt!="" OR f.v3_amt!="") where f.id=2
:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.