此问题的答案如下:
非常抱歉,您和我的查询没有错,这只是我读取数据时的愚蠢错误,我在第二张表中没有任何相关数据,因此为空。
我在连接表以从多个表中获取一些结果时遇到问题。我有多个没有这种关系的表:
订单:
Id . Name
---------
1 . abc
2 . def
OrderDetail
Id . OrderId . Value
---------------------
1 . 1 . 35
2 . 1 . 24
3 . 2 . 45
我想从OrderDetail
得到一些结果,但是条件必须在Order
中,例如:
SELECT od.*
FROM Order o, OrderDetail od
WHERE o.id = od.OrderId AND o.name = 'abc';
我希望结果会像
OrderDetail
Id . OrderId . Value
1 . 1 . 35
2 . 1 . 24
但是结果我什么也没得到,但是如果我跑步;
SELECT od.*
FROM Order o, OrderDetail od
WHERE o.id = od.OrderId;
我仍然可以获得全部结果,我的2个表之间没有任何关系。
答案 0 :(得分:0)
忘记加入。这会返回什么?
select o.*
from orders o
where o.name = 'abc';
我的猜测是它什么也不返回。因此,您看到的“ abc”并不是真正的“ abc”。最可能的问题是隐藏字符。以字符开头和结尾:
where o.name like '%abc%';
这可以帮助您找出问题所在。如果仍然没有返回任何内容,则说明字符之间可能存在 问题:
where o.name like '%a%b%c%';
如果仍然不返回任何内容,则“ a”,“ b”或“ c”可能是错误的字符。除非您查看要存储的实际字符,否则很难弄清楚这一点。
答案 1 :(得分:0)
非常抱歉,您的查询没有错,您的查询没有错,这只是我读取数据时的愚蠢错误,我在第二张表中没有任何相关数据,因此为空。谢谢您的时间
答案 2 :(得分:0)
我相信你是在追求
SELECT od.* FROM Order o
JOIN OrderDetail od ON o.id = od.OrderId
WHERE o.name = 'abc';