Mysql 使用联接从两个表中搜索数据如何处理空值
我已经编写了一个搜索查询,它将连接两个不同的表。我在两个球上都打了左接球。现在第一个表包含60条记录,而第二个表只有30条记录。现在我想,如果我搜索查询应该返回所有记录。现在它正在返回30。 同样的问题 从A.Id=B.AId上的左侧连接B中选择A.,B.,其中 A.name=IfNull('tst',A.name)和B.class=IfNull('c',B.class)Mysql 使用联接从两个表中搜索数据如何处理空值,mysql,Mysql,我已经编写了一个搜索查询,它将连接两个不同的表。我在两个球上都打了左接球。现在第一个表包含60条记录,而第二个表只有30条记录。现在我想,如果我搜索查询应该返回所有记录。现在它正在返回30。 同样的问题 从A.Id=B.AId上的左侧连接B中选择A.,B.,其中 A.name=IfNull('tst',A.name)和B.class=IfNull('c',B.class) 请指导我,谢谢。明智的做法是记住联接操作(各种联接操作,左、右、内、外)的目的是创建一个新的虚拟表,该表由联接在一起的表组合
请指导我,谢谢。明智的做法是记住联接操作(各种联接操作,左、右、内、外)的目的是创建一个新的虚拟表,该表由联接在一起的表组合而成 这个连接的虚拟表应该包含什么?在您的情况下,A.ID列和B.AID列的含义是什么
SELECT A.*, B.*
FROM A
LEFT JOIN B ON A.ID = B.AID
如果您碰巧只需要A中没有对应B行的行,请尝试此操作
SELECT A.*
FROM A
LEFT JOIN B ON A.ID = B.AID
WHERE B.AID IS NULL
如果两个问题的答案都是肯定的,那么您可能需要:
SELECT A.*, B.*
FROM A
OUTER JOIN B ON A.ID = B.AID
但是你应该仔细考虑。试试这个逻辑,我希望它对你有用
select A.*,B.* from A left join B on A.Id=B.AId where B.Id != ''
查看30条记录后,我的表B没有与A匹配的值。事实上,表B只有30条记录。是的,我的问题已解决。我编写了B.Name=ifnull('Test',B.Name),我传递的B.Name的值为null,表值也为null。因此它应该匹配,但此条件失败。当我写B的时候,名字是空的,它是有效的。