1
我有一个问题,建立一个SQL查询,希望有人能帮助我。mySQL从两个表中选择匹配或不存在
所以这里的任务,我有两个表我想用一个单一的查询。不是一个大问题,除非涉及WHERE子句匹配。我需要表A中的所有条目,但仅匹配表B中的条目,但保留表A中不存在链接ID的条目。
要明确什么我这里是对表结构的一例...
TABLE A
ID | VAL1 | VAL2 | VAL3
1 | abc | xyz | 123
2 | abc | xyz | 123
3 | abc | xyz | 123
4 | abc | xyz | 123
TABLE B
ID | A-ID | X1 | X2 | X3 | FLAG
1 | 1 | ab | xy | 98 | 1
2 | 1 | ab | xy | 98 | 1
3 | 1 | ab | xy | 98 | 0
4 | 2 | ab | xy | 98 | 1
5 | 2 | ab | xy | 98 | 0
6 | 4 | ab | xy | 98 | 1
因此,如果使用这种查询...
SELECT a.*, b.* FROM Table_A AS a LEFT JOIN Table_B AS b ON b.a-id = a.id WHERE b.flag = 0
...我得到的,当然只有在B中具有匹配的A的条目(在本例中为ID 1和2),因为3在B中没有条目并且仅有4条具有FLAG 1的条目。
但是,在结果数组,我需要A3和A. 4以及B阵列值简单地为空。
我有currenlty没有线索,如果这可以很容易地完成,并在一个单一的查询。我已经尝试了不同的方法,通过改变查询类似的东西...
SELECT a.*, (SELECT b.* FROM Table_B AS b WHERE b.a-id = a.id) AS array FROM Table_A AS a
...但在这种情况下b。*是不允许的。 :(