【发布时间】:2013-01-11 09:02:00
【问题描述】:
我的 SQL 查询有问题。
情况如下:
我有两张桌子,A 和 B。
表 A:
---------------------------------------------
*| A.id | A.t_id | A.f_id | A.type |*
---------------------------------------------
| 1 | 32 | 3 | Loading |
| 2 | 34 | 5 | Discharge |
| 3 | 32 | 3 | Discharge |
---------------------------------------------
表 B:
-----------------------
*| B.id | B.shipid |*
-----------------------
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
-----------------------
我需要来自 A 的所有行,其中 A.type=Loading, A.t_id 是 B.id -> B.shipid=2 和 .到目前为止,我的查询是:
SELECT * FROM A, B WHERE (A.type='Loading' AND B.shipid=2 AND A.t_id=B.id)
但这不会返回正确的记录(实际上没有),而数据应该适合查询。我的查询哪里出错了?
【问题讨论】:
-
您为什么期待结果?
32或34怎么能等于1、2或3? -
不应该是
where A.f_id = B.id吗? -
我强烈建议您花一些时间来掌握 ANSI 标准连接语法。在
FROM子句中列出表会导致彻底的灾难,因为您无法将连接条件与WHERE子句中的过滤条件区分开来。 -
+1 @DMK 似乎是这样.. 查看示例数据.. 以及 ypercube..