MySQL UNION的替代品

时间:2012-02-17 16:54:56

标签: mysql

什么是这个

的替代品
SELECT  i.title AS title,i.category AS category FROM table_a  WHERE REGEXP 'news'
UNION 
SELECT i.name AS title,i.categoryname AS category FROM table_b WHERE REGEXP 'news'

不使用UNION?我们遇到的问题是我们必须从table_a中选择更多行,而UNION必须有行#matre。我们可以通过选择不同的行伪造table_b中的行,但是当我们有7或8个表混合时它们只会混淆,而且它们都没有相同的行数或匹配的名称。我们不能使用JOIN,因为我们已经注意到他们加入了。

谢谢!

2 个答案:

答案 0 :(得分:6)

你可以用null或其他一些有意义的常量填充空白:

SELECT a, b, c, d FROM t1
UNION
SELECT a, b, null, 0 FROM t2
UNION
SELECT '', b, c, 1 FROM t3

答案 1 :(得分:0)

您可以执行以下操作:

...UNION SELECT i.name AS title,'empty' AS category FROM table_b WHERE REGEXP 'news'

您选择的内容不一定是列。如果你在一个结果中需要UNION 7或8表,那么你的底层数据模型可能会得到改进,但也许你不能改变它?