[英]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.