我相当新,SQL希望了解下面的逻辑。
SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1 = 'TASK';
不确定这是否是一个明确的细节,但请告诉我。谢谢!
答案 0 :(得分:3)
SELECT * - 选择所有列
FROM TABLE A A1 - 来自表A.A1就像你给表A的昵称。而不是输入A.ColumnName(A可能是一个很长的名字)你只需输入A1 .ColumnName
INNER JOIN表B B1 - 您正在加入表A和B.同样,B1只是一个昵称。这是一个很好的图片解释连接。
ON B1.ID = A1.ID - 这是2个表共有的列(关系列)这些列需要包含相同的数据。
AND A1 =' TASK' - 这就是说你要加入A1 tablename
答案 1 :(得分:3)
SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID AND A1.Column = 'TASK'
与
相同SELECT *
FROM Table A A1
INNER JOIN TABLE B B1 ON B1.ID = A1.ID
WHERE A1.Column = 'TASK'
它甚至是相同的性能,它只是编写查询的另一种方式。在非常大的查询中,直接在AND
上使用INNER JOIN
而不是在WHERE
部分中“隐藏”它会更具可读性。
答案 2 :(得分:2)
这根本不会运行
SELECT *
FROM Table A A1 INNER JOIN
TABLE B B1
ON B1.ID = A1.ID AND A1 = 'TASK';
这将运行,因为我添加了一个列名(SomeColumn
):
SELECT *
FROM Table A A1 INNER JOIN
TABLE B B1
ON B1.ID = A1.ID AND A1.SomeColumn = 'TASK';
与此相同
SELECT *
FROM Table A A1 INNER JOIN
TABLE B B1
ON B1.ID = A1.ID
WHERE A1.SomeCoumn = 'TASK';
每当你加入一个常量时,它几乎与向where子句添加一个额外的标准一样。加入连接的唯一原因是代码清晰。