假設我有這些資料集:
表 A:
| 標識(整數) | 值(varchar) | b_ids(varchar) |
|---|---|---|
| 1 | 一個值 | 1 |
| 2 | 另一個值 | 2,3 |
表 B:
| 標識(整數) | 值(varchar) |
|---|---|
| 1 | 一個值 |
| 2 | 另一個值 |
| 3 | 另一個另一個值 |
我必須在b_ids這里使用的原因是因為必須在 A 行之前插入 B 行
我正在嘗試從一個查詢中獲取SELECT行Table A和相應的值,并使該查詢成為用于過濾目的的視圖Table B
到目前為止,我的嘗試只給了我 A 行 相關 B 行中的第一個值:
SELECT * FROM A
LEFT JOIN B ON B.id IN (A.b_ids);
我得到了這樣的東西:
| ID | 價值 | b_ids | ID | 價值 |
|---|---|---|---|---|
| 1 | 一個值 | 1 | 1 | 一個值 |
| 2 | 另一個值 | 2,3 | 2 | 另一個值 |
我嘗試了其他連接(INNER JOIN, RIGHT JOIN, CROSS JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN),結果相同
如果我的努力甚至可以在一個單一的 SELECT 中完成,我顯然仍然在 join 部門缺少一些東西
有沒有辦法將表 B 的值作為此查詢中的行陣列回傳?
即使下面的結果是輸出,我也可以使用它:
| ID | 價值 | b_ids | ID | 價值 |
|---|---|---|---|---|
| 1 | 一個值 | 1 | 1 | 一個值 |
| 2 | 另一個值 | 2,3 | 2 | 另一個值 |
| 2 | 另一個值 | 2,3 | 3 | 另一個另一個值 |
注意:我在這里選擇表 A 作為第一個表,因為實際情況涉及與其他表的連接
uj5u.com熱心網友回復:
如果 A(1)---(n)B 表之間存在一對多關系,您應該更改表模式應該是這樣的:
表 A:
| 標識(整數) | 值(varchar) |
|---|---|
| 1 | 一個值 |
| 2 | 另一個值 |
表 B:
| 標識(整數) | 值(varchar) | a_ids(varchar) |
|---|---|---|
| 1 | 一個值 | 1 |
| 2 | 另一個值 | 2 |
| 3 | 另一個另一個值 | 2 |
所以現在您可以在單個查詢中輕松定義表關系或獲取資料
** 如果表具有多對多關系,則需要資料透視表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515964.html
標籤:mysqlsql数据库
上一篇:在mysql更新中觸發
下一篇:在ABAPCDS中計算前一天?
