如何使用mysql条件查询两个表

时间:2016-07-01 03:00:35

标签: mysql

使用mysql条件查询两个表

如果我将使用某些查询条件,如何获得特定查询,例如我有表:

表A:

column1
  row1111
  row2222
  row3333
  row4444

表B:

 column1
  rowAAAA
  rowBBBB
  rowCCCC
  rowDDDD

是否可以提供条件来检查所选列为空或空。这是我的伪代码:

if any column in Table A query is null, I will use query to TableB
else query to TableA

任何建议或评论都是一个很大的帮助!,提前感谢。

3 个答案:

答案 0 :(得分:0)

以下内容可能适合您:

SELECT `value` FROM (
 SELECT 'a' as `source`, a.* from tableA a
 UNION
 SELECT 'b' as `source`, b.* from tableB b) j
WHERE `source` = IF((SELECT COUNT(*) FROM tableA 
                     WHERE `value` IS null)>0,'b','a');

解释

我们通过UNION合并完整数据集,确定每行的来源。然后在WHERE子句中,我们从一个表或另一个表中选择,具体取决于在tableA中是否检测到NULL个值。

http://sqlfiddle.com/#!9/55e52e/1

答案 1 :(得分:0)

有可能得到你正在尝试的东西。

但是从two different tables执行此操作会降低速度。

both columns合并到同一个表格中,您可以通过使用以下查询获得结果

select coalesce(column1,column2) from table

答案 2 :(得分:0)

您可以使用UNIONNOT EXISTS来完成此操作

如果第一个查询从第一个查询返回NULL ELSE返回结果,则从第二个查询返回值

SELECT 
colA
FROM table_A

UNION 

SELECT colB
FROM table_b
WHERE NOT EXISTS 
(
    SELECT colA from table_a
)

SQL FIDDLE DEMO