在第二个表中连接具有一个已知变量的表

时间:2013-01-11 09:02:00

标签: mysql sql join left-join

我的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)

但是这不会返回正确的记录(实际上没有),而数据应该适合查询。我的查询在哪里出错了?

3 个答案:

答案 0 :(得分:1)

试试这个::

SELECT 
*  
FROM 
A
INNER JOIN B ON A.t_id=B.id

WHERE  A.type='Loading' AND B.shipid=2

答案 1 :(得分:0)

试试这个

SELECT * FROM A a JOIN B b ON a.t_id = b.id WHERE b.shipid = 2 AND a.type = 'Loading'
-- a and b are aliases for A and B. If you have any bigger table names, it's useful

您应该查找SQL JOIN http://www.w3schools.com/sql/sql_join.asp

答案 2 :(得分:0)

如果您需要A中的所有行,那么它听起来像是左连接...所以请提供您的预期结果以确认..

SELECT A.*  FROM A
INNER JOIN B 
ON A.f_id=B.id
AND A.type='Loading' AND B.shipid=2
;

由于您有条件获取加载记录,唯一的问题是该ID不符合上述指出的评论..