簡體   English   中英

選擇字段別名條件和多個聯接

[英]Select field alias condition and multiple joins

我很難弄清楚如何編寫查詢以選擇所需的數據。

所以問題是:我有一個表和另外三個帶外鍵的表。 我需要從第一個表中選擇所有字段,並從其他三個表中選擇一個作為別名(基於哪個字段不為空)。 在大多數情況下,三個表中的兩個表將為指定的列提供空值,但是如果有兩個我想首先選擇的非空值。

也許我的解釋不是很好,但我會嘗試一下。 假設我有這個主表

Table_1
TableOneID int(11),
SomeOtherData text

Table_2
TableTwoID int(11),
TableOneID int(11),
TableTwoValue varchar(250)

Table_3
TableThreeID int(11),
TableOneID int(11),
TableThreeValue varchar(250)

Table_4
TableFourID int(11),
TableOneID int(11),
TableFourValue varchar(250)

所以我想做類似的事情

SELECT *, (HERE TO SELECT FIRST NON NULL VALUE FROM Table_2(TableTwoValue), 
Table_3(TableThreeValue) or Table_4(TableFourValue)) AS ExtraField FROM Table_1
LEFT JOIN Table_2 USING(TableOneID) ..... LEFT JOIN Table_4 USING(TableOneID);

這可能發生嗎? :)

最簡單的方法是更改​​數據庫結構:

Table_1
TableOneID int(11),
SomeOtherData text

Table_X
ID int(11),
TableOneID int(11),
TableTwoValue varchar(250),
number int(11)

在編號上加上表編號(1、2、3等),查詢變得更加容易。

我想我找到了解決方案。

我必須使用COALESCE

SELECT COALESCE(TableTwoValue, TableThreeValue, TableFourValue) 
AS ExtraField FROM ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM