我想我曾经问过一个问题,就像以前曾经问了一千次,但我不理解其他问题中的那个部分,我希望有人可以用我简单的代码解释一下。
我有两张桌子
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最好使用"使用"或者"加入"但我真的很难理解它是如何运作的......: - (
答案 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 JOIN
和ON
将显式连接替换为隐式连接。作为一般规则,您应该避免在FROM
子句中编写逗号。