什么是这个替代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