2017-08-04 96 views
0

我正嘗試使用多個表創建搜索表單。帶有「*」的SQL「AS」語句

我的問題在於「名稱AS名稱,*」部分,它不會使用名稱作爲名稱,並且同時在表中查找所有內容。

這是我的SQL查詢:

SELECT name AS name, * FROM files_plus WHERE name LIKE '%$query%' 
    UNION ALL 
    SELECT username AS name FROM users WHERE username LIKE '%$query%' 
    LIMIT 5 
+0

也沒有sql標準允許在選擇表達式顯式列後使用'*' – cowbert

+0

即使我鍵入cloumn名稱,它不會工作,因爲我使用AS語句。 –

+0

嘗試使用表格名稱進行限定:'files_plus.name,files_plus。*',因爲連接允許使用該語法(從t1連接t2開始選擇t1。*,t2.col) – cowbert

回答

0

「SELECT名作爲名稱」 相同 「選擇的名字從......」。其次,「SELECT name ...」是「SELECT * FROM ...」的一部分。寫像「SELECT * FROM ...」,你就能毫不費力地檢索您的信息

+0

我試過了,我發現它很奇怪,但它也不起作用。 –

0

你需要先工會的名字,然後做一個LEFT JOINfiles_plus得到其他列:

SELECT * FROM 
(SELECT name AS name FROM files_plus WHERE name LIKE '%$query%' 
    UNION ALL 
    SELECT username AS name FROM users WHERE username LIKE '%$query%') 
AS names 
LEFT JOIN files_plus ON names.name = files_plus.name 

您將擁有一個name的重複列,但您應該在原始查詢中擁有該列。

+0

這有點有用,除非它不顯示來自第二個表(用戶)的名稱。 –

+0

你的名字有重疊嗎?如果是這樣,你需要一個額外的列來確定來源。 –