来自第一个表的GET *数据连接相同的ID

时间:2017-03-18 10:57:15

标签: mysql

我想我曾经问过一个问题,就像以前曾经问了一千次,但我不理解其他问题中的那个部分,我希望有人可以用我简单的代码解释一下。

我有两张桌子

TableA -> ID|SITEID|NEXT|...
TABLEB -> ID|SITEID|ANOTHER|...

现在我想要抓住所有匹配相同SITEID =&STSEXY'和TABLEB.ANOTHER =' IDXY'。结果我只想收到TABLEA的字段。

目前我这样做,但我从两个表中得到了字段。

SELECT * FROM TABLEA, TABLEB WHERE TABLEA.SITEID='SITEXY' AND TABLEB.ANOTHER='IDXY' AND TABLEA.SITEID=TABLEB.SITEID;

Mybe最好使用"使用"或者"加入"但我真的很难理解它是如何运作的......: - (

2 个答案:

答案 0 :(得分:1)

您可以使用要从中获取行的表来限定通配符:

select TABLEA.*
from TABLEA
join TABLEB on TABLEA.SITEID = TABLEB.SITEID
where TABLEA.SITEID = 'SITEXY'
    and TABLEB.ANOTHER = 'IDXY';

此外,始终使用现代显式连接语法而不是基于逗号的连接。

使用别名,可以使查询位更清晰:

select a.*
from TABLEA a
join TABLEB b on a.SITEID = b.SITEID
where a.SITEID = 'SITEXY'
    and b.ANOTHER = 'IDXY';

答案 1 :(得分:1)

为两个表分配别名,然后从TABLEA中选择所有列:

SELECT a.*
FROM TABLEA a
INNER JOIN TABLEB b
    ON a.SITEID = b.SITEID
WHERE a.SITEID = 'SITEXY' AND
      b.ANOTHER = 'IDXY';

别名可以更轻松地读取和编写查询。请注意,我还使用INNER JOINON将显式连接替换为隐式连接。作为一般规则,您应该避免在FROM子句中编写逗号。