mysql - 从两个没有主键但sql中相同的三列字段的表中选择

标签 mysql sql sql-server

我的两个表没有主键,但具有相同的三列字段。我从两个表中进行选择,结果如下:

表1:

No    Code    Row    Price
001   0001    1      100
001   0001    2      200
002   0001    1      300

表2:

No    Code    Row    Qty    Date
001   0001    1      10     2016
001   0001    2      20     2017

结果表:

No    Code    Row    Price    Qty    Date    Row2
001   0001    1      100      10     2016    1
001   0001    1      100      10     2016    2
001   0001    2      200      20     2017    1
001   0001    2      200      20     2017    2

我的 SQL:

Select 
T2.No,T2.Code,T2.Row,T1.Price,T2.Qty,T2.Date,T1.Row as Row2
From Table1 T1 JOIN Table2 T2
On T1.No = T2.No
And T1.Code = T2.Code
Order by T2.Code,T1.Row

我希望结果是这样的:

No    Code    Row    Price    Qty    Date    Row2
001   0001    1      100      10     2016    1
001   0001    2      200      20     2017    2

我应该写什么SQL?请给我建议..我是 SQL 新手。 如果我像这样修改查询:

Select 
T2.No,T2.Code,T2.Row,T1.Price,T2.Qty,T2.Date,T1.Row as Row2
From Table1 T1 JOIN Table2 T2
On T1.No = T2.No
And T1.Code = T2.Code
And T1.Row = T2.Row
Order by T2.Code,T1.Row

结果什么也没有... 请帮助我。

提前致谢。

最佳答案

使用 Left Join 可以解决您的问题。

SELECT T2.No,T2.Code,T2.Row,T1.Price,T2.Qty,T2.Date,T1.Row as Row2
FROM Table2 T2 
LEFT JOIN Table1 T1 ON T1.No = T2.No
     And T1.Code = T2.Code
     And T1.Row = T2.Row
ORDER BY T2.Code,T1.Row

关于mysql - 从两个没有主键但sql中相同的三列字段的表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34914307/

相关文章:

php - 将特定字母替换为范围数字并使用 php 在数据库中搜索

sql - 如何修复 SQL 查询中的错误 "Conversion failed when converting datetime from character string"?

sql-server - SQL Server - PWDEncrypt 和 PWDCompare 的替代实现

sql - 如何从 SQL Server 表中检索特定行?

mysql - vb.net datagridview过滤列未运行

php - mysql函数,当输入客户号码时返回带有字符串的所有地址

mysql - MySQL如何更新同一个表中的字段值?

sql - 如何仅从字符串中提取字母数字字符? (SQL 谷歌 BigQuery)

php - 在插入之前验证 CSV 数据的有效性以及 CSV 文件名,如果中间存在错误/丢失数据,则不要插入到数据库

mysql - 为什么此查询和条件返回行