1
我有兩個表:如果第一個行中沒有足夠的行,如何從另一個表中選擇行?隨着SQL
表 「項目」:
| id | name | description |
| 1 | Michael | This is a random description blabalbla |
| 2 | Tom | This is another descriptions blablabla |
表 「moreitems」:
| id | name | description |
| 1 | Michael | This is a random description blabalbla |
| 2 | Mike | This is another descriptions blablabla |
| 3 | Michael | This is a random description blabalbla |
| 4 | Blain | This is another descriptions blablabla |
目前,我取這樣從第一個表項:
SELECT * FROM items WHERE name = 'Michael' AND CHAR_LENGTH(description) > 10 LIMIT 3
我想在查詢中包含第二個表,如果限制(3)尚未達到。我怎麼做 - 沒有PHP?
這工作,但我有一個問題:這是否會統一兩個表的每一個查詢?即使在第一行中有足夠的行嗎?恐怕這會降低服務器的速度,如果是這樣的話。 – 2012-04-03 10:54:51
它將統一兩個表的匹配結果(而不是將選擇標準應用於兩個表中的UNIONed行,這會在找到匹配記錄之前統一兩個表中的所有行)。你可以在第二個WHERE子句中添加AND AND>(SELECT count(*)從WHERE name ='Michael'AND CHAR_LENGTH(description)> 10)'條件,儘管這會使查詢訪問'items'表兩次;如果'moreitems'比'items'大**大得多,它才真正值得。 – 2012-04-03 11:08:12