Mysql 从另一个表中存在列值的一个表中选择记录

Mysql 从另一个表中存在列值的一个表中选择记录,mysql,select,join,Mysql,Select,Join,我有两个MySQL表A和B 我只想选择a中存在某个值的B中的记录 例如: A有两列:aID、Name B列有:投标、援助、名称 我只想要B的记录,A中有援助 非常感谢。您需要进行连接,如果不想从表b中检索任何内容,只需从表a返回值即可 这应该行得通 从b.aID=a.aID上的b join a中选择b.*b需要进行连接,如果不想从表b检索任何内容,只需从表a返回值即可 这应该行得通 从b中选择b.*在b.aID=a.aID上加入a。下面的查询也将有效 SELECT * FROM B WHERE

我有两个MySQL表A和B

我只想选择a中存在某个值的B中的记录

例如:

A有两列:aID、Name

B列有:投标、援助、名称

我只想要B的记录,A中有援助


非常感谢。

您需要进行连接,如果不想从表b中检索任何内容,只需从表a返回值即可

这应该行得通


从b.aID=a.aID上的b join a中选择b.*b需要进行连接,如果不想从表b检索任何内容,只需从表a返回值即可

这应该行得通


从b中选择b.*在b.aID=a.aID上加入a。下面的查询也将有效

SELECT * FROM B 
WHERE B.aID IN (SELECT DISTINCT aID FROM A)

下面的查询也将有效

SELECT * FROM B 
WHERE B.aID IN (SELECT DISTINCT aID FROM A)

你可以像这样使用join

Select b.col1,b.col2... From tableB b inner join table tableA a on b.field = a.field

你可以像这样使用join

Select b.col1,b.col2... From tableB b inner join table tableA a on b.field = a.field

您需要执行两个表中都存在的内部联接记录,或者使用左联接来显示A中存在的记录以及B中存在的匹配ID

一个很好的参考:


您需要执行两个表中都存在的内部联接记录,或者使用左联接来显示A中存在的记录以及B中存在的匹配ID

一个很好的参考:


你试过使用左连接吗

SELECT b.* FROM tableB b LEFT JOIN tableA a ON b.aID = a.aID

你试过使用左连接吗

SELECT b.* FROM tableB b LEFT JOIN tableA a ON b.aID = a.aID

您只需要在表a和表B之间进行简单的内部联接。因为它们在aID列上是相关的,所以您可以使用该联接将它们联接在一起:

SELECT b.*
FROM tableB b
JOIN tableA a ON a.aID = b.aID;
这将仅选择tableA中存在tableB中的aID值的行。如果没有连接,则不能将行包括在联接中

虽然我建议使用联接,但您也可以将其替换为子查询,如下所示:

SELECT *
FROM tableB
WHERE aID NOT IN (SELECT aID FROM tableA)

您只需要在表a和表B之间进行简单的内部联接。因为它们在aID列上是相关的,所以您可以使用该联接将它们联接在一起:

SELECT b.*
FROM tableB b
JOIN tableA a ON a.aID = b.aID;
这将仅选择tableA中存在tableB中的aID值的行。如果没有连接,则不能将行包括在联接中

虽然我建议使用联接,但您也可以将其替换为子查询,如下所示:

SELECT *
FROM tableB
WHERE aID NOT IN (SELECT aID FROM tableA)

您需要使用联接。可能的重复项您需要使用联接。可能的重复项将起作用,但效率低下。看,这会奏效,但效率低下。左连接不起作用。这将包括B中的所有行,不管它是否与表a有连接。这实际上是可行的。b.aID=a.aID不是用来检查a中是否存在表b中的aID吗?您对答案投否决票的速度有多快。因为这是一个左连接,所以返回B中的所有行。如果b中的某行没有b.aid=a.aid,则仍会在此查询中返回该行。左联接将不起作用。这将包括B中的所有行,不管它是否与表a有连接。这实际上是可行的。b.aID=a.aID不是用来检查a中是否存在表b中的aID吗?您对答案投否决票的速度有多快。因为这是一个左连接,所以返回B中的所有行。如果b中的行没有b.aid=a.aid,则仍会在此查询中返回该行。