2012-02-10 23 views
1

我有這樣一個查詢:MYSQL - 'SELECT'和'AS只能創建一列。如何讓它們變得更多?

SELECT (SELECT name FROM text WHERE id = 100) as name, x, y, w, h FROM pictures WHERE id_obj = 'example' AND picture_type = 20 ORDER BY id DESC LIMIT 1 

它工作正常,只要有一個從圖片表符合條件的任何一行。不幸的是(對我來說很明顯爲什麼),當沒有picture_type = 20和id_obj ='example'時,雖然在'text'表中有id = 100的行,但它會產生空結果。

問題是:如何從'文本'表中選擇名稱,無論圖片類型和id_obj是否存在於'圖片'表中?

我發現了這樣的查詢,但我不喜歡它(它太複雜,看起來可怕:)

SELECT 
(SELECT name FROM text WHERE id = 100) as name, 
(SELECT x FROM pictures WHERE id_obj = 'example' AND picture_type = 20) as x, 
(SELECT y FROM pictures WHERE id_obj = 'example' AND picture_type = 20) as y, 
(SELECT w FROM pictures WHERE id_obj = 'example' AND picture_type = 20) as w, 
(SELECT h FROM pictures WHERE id_obj = 'example' AND picture_type = 20) as h, 
(SELECT id FROM pictures WHERE id_obj = 'example' AND picture_type = 20) as id 
ORDER BY id DESC LIMIT 1 

我能讓它更乾淨? 在此先感謝。

+0

你嘗試了左外連接? – Brian 2012-02-10 14:26:36

回答

3

左嘗試加入,應該很好地工作:

SELECT t.name, p.x, p.y, p.w, p.h FROM text t 
LEFT JOIN pictures p ON p.id_obj = 'example' AND p.picture_type = 20 
WHERE t.id = 100 
+1

作品完美無缺,更乾淨!謝謝! – Kalreg 2012-02-10 14:37:11

+0

不錯,請將此標記爲正確答案。 – 2012-02-10 21:26:40

相關問題