什麼是這個替代MySQL的UNION
替代,而無需使用UNION?我們遇到的問題是我們必須從table_a中選擇更多的行,並且UNION必須有行#match。我們可以通過選擇不同的行來僞造table_b中的行,但是當我們有7或8個表進行混合並且它們都沒有相同數量的行或匹配的名稱時,它會變得混亂。我們不能使用JOIN,因爲我們已經注意到了它們。
謝謝!
什麼是這個替代MySQL的UNION
替代,而無需使用UNION?我們遇到的問題是我們必須從table_a中選擇更多的行,並且UNION必須有行#match。我們可以通過選擇不同的行來僞造table_b中的行,但是當我們有7或8個表進行混合並且它們都沒有相同數量的行或匹配的名稱時,它會變得混亂。我們不能使用JOIN,因爲我們已經注意到了它們。
謝謝!
您可以用空,或其他一些常量有意義正是如此填空:
SELECT a, b, c, d FROM t1
UNION
SELECT a, b, null, 0 FROM t2
UNION
SELECT '', b, c, 1 FROM t3
他不想要它沒有任何聯盟聲明... – hackartist 2012-02-17 17:13:04
他想要什麼可能不是他所需:-) – Andrew 2012-02-17 17:17:02
我同意他可能需要一個工會來做到這一點,所以在你的答案中說,爲什麼使用UNION實際上是最好的方法來做到這一點。 – hackartist 2012-02-17 17:17:55
你可以這樣做:
...UNION SELECT i.name AS title,'empty' AS category FROM table_b WHERE REGEXP 'news'
你所選擇不必有必要的一列。如果你必須在一個結果中使用UNION 7或8表,可能會改善你的底層數據模型,但也許你不能改變它?
我不認爲模型可以改進比現在更多,因爲沒有任何表匹配任何其他表,這是與PHP條件AJAX搜索排除特定的。所以UNION是最簡單的方法。 – Benn 2012-02-17 17:33:31
您可以使用連接,只需對條件進行硬編碼即可關於SomeField ='Fred',以避免獲得笛卡爾產品。擁有7或8張桌子的課程將與您擁有的技巧一樣多。 – 2012-02-17 17:06:38
方式很多,因爲我也有PHP的條件,至於什麼表不包括 – Benn 2012-02-17 17:31:12