MySQL使用DISTINCT或LIMIT左连接。只需要左连接一个值
MySQL表18_8_ MySQL表2\u 1\u日志 MySQL表18_6_TransactionPartners 质疑 为了得到这样的结果,必须输入输出MySQL使用DISTINCT或LIMIT左连接。只需要左连接一个值,mysql,Mysql,MySQL表18_8_ MySQL表2\u 1\u日志 MySQL表18_6_TransactionPartners 质疑 为了得到这样的结果,必须输入输出 TransactionPartnerName | Amount ----------------------------------------- Name1 | 55 但是,如表18所示,TransactionPartners有两个名称1 get 尝试选择相同的结果而不是选择 而不是在Transacti
TransactionPartnerName | Amount
-----------------------------------------
Name1 | 55
但是,如表18所示,TransactionPartners有两个名称1 get
尝试选择相同的结果而不是选择
而不是在TransactionPartnerName=CompanyName上尝试了TransactionPartnerName=CompanyName限制1获取语法错误
可能在某个地方需要按公司名称分组
请给出建议……试试这样的方法:
SELECT
TransactionPartnerName, Amount
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners ON TransactionPartnerName = CompanyName
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
GROUP BY TransactionPartnerName;
试着这样做:
SELECT
TransactionPartnerName, Amount
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners ON TransactionPartnerName = CompanyName
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
GROUP BY TransactionPartnerName;
DISTINCT并没有限制结果中的行数——它只是确保所有行都是唯一的
极限解是正确的。只有它必须放在查询的末尾。因此,正确的查询应该是:
SELECT
AccountNumber,
DebitAccount, TransactionPartnerName, Amount,
CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal
ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners
ON TransactionPartnerName = CompanyName
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
LIMIT 1;
DISTINCT并没有限制结果中的行数——它只是确保所有行都是唯一的
极限解是正确的。只有它必须放在查询的末尾。因此,正确的查询应该是:
SELECT
AccountNumber,
DebitAccount, TransactionPartnerName, Amount,
CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal
ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners
ON TransactionPartnerName = CompanyName
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
LIMIT 1;
您可以在TransactionPartners表左侧的子查询中使用GROUPBY语句
SELECT
AccountNumber, DebitAccount, TransactionPartnerName, Amount, CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN (SELECT CompanyName FROM 18_6_TransactionPartners GROUP BY CompanyName) ON TransactionPartnerName = CompanyName
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
edit1:更正了列名。您可以在TransactionPartners表左侧的子查询中使用GROUPBY语句
SELECT
AccountNumber, DebitAccount, TransactionPartnerName, Amount, CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN (SELECT CompanyName FROM 18_6_TransactionPartners GROUP BY CompanyName) ON TransactionPartnerName = CompanyName
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
edit1:更正了列名。尝试使用唯一键建立表之间的关系 将TransactionPartnerName更改为TransactionPartnerId,并将新列PartnerId添加到18_6_TransactionPartners表中,然后使用此新列连接这些表
SELECT AccountNumber, DebitAccount, TransactionPartnerName, Amount, CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners ON TransactionPartnerId = PartnerId
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
尝试使用唯一键在表之间建立关系 将TransactionPartnerName更改为TransactionPartnerId,并将新列PartnerId添加到18_6_TransactionPartners表中,然后使用此新列连接这些表
SELECT AccountNumber, DebitAccount, TransactionPartnerName, Amount, CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners ON TransactionPartnerId = PartnerId
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55
尝试过,而且似乎完全是必要的。按帮助分组。由于金额字段对于TransactionPartnerName的每个值始终具有相同的值,因此按句子分组是最佳选择。但是,如果在表2\u 1\u日记账中有多条记录的名称为1,而不是所有记录,则只能获得一条记录…尝试了,似乎完全是必要的。按帮助分组。由于金额字段对于TransactionPartnerName的每个值始终具有相同的值,因此按句子分组是最佳选择。但是,如果在表2\u 1\u日记账中有多条记录的名称为1而不是所有记录,则只能获取一条记录…不幸的是,获取SQLSTATE[42000]:语法错误或访问冲突:1248每个派生表都必须有自己的别名。似乎@vicentazo解决方案有效,而且非常简短……感谢您的想法。将此左连接选择TransactionPartnerName从18_6_TransactionPartners GROUP BY TransactionPartnerName更改为左连接选择CompanyName从18_6_TransactionPartners GROUP BY CompanyName 18_6_TransactionPartners无错误,似乎获取了所需内容,但需要测试,误认了列名。但是,您必须测试哪个查询具有更好的性能。不幸的是,get-SQLSTATE[42000]:语法错误或访问冲突:1248每个派生表都必须有自己的别名。似乎@vicentazo解决方案有效,而且非常简短……感谢您的想法。将此左连接选择TransactionPartnerName从18_6_TransactionPartners GROUP BY TransactionPartnerName更改为左连接选择CompanyName从18_6_TransactionPartners GROUP BY CompanyName 18_6_TransactionPartners无错误,似乎获取了所需内容,但需要测试,误认了列名。但是,您必须测试哪个查询具有更好的性能。
SELECT AccountNumber, DebitAccount, TransactionPartnerName, Amount, CompanyName
FROM 18_8_ChartOfAccounts
LEFT JOIN 2_1_journal ON AccountNumber = DebitAccount
LEFT JOIN 18_6_TransactionPartners ON TransactionPartnerId = PartnerId
WHERE VatReturnRowNumberForDebitTurnover = '61' AND Amount = 55