gpt4 book ai didi

mysql - 简单的 MySQL 加入 varchar(100) 字段不起作用

转载 作者:可可西里 更新时间:2023-11-01 07:22:52 25 4
gpt4 key购买 nike

因此,我正在为 mysql 进行连接以过滤掉一些不良数据,但我遇到了这个奇怪的问题。

  • 两个表都通过 payment_transaction_id 连接。
  • 它们的值都为 3463
  • 联接结果不返回任何行。
  • 两个表都有这个值。

记录在 card_transaction_log 中的证明:

select count(*)
from card_transaction_log
where payment_transaction_id = 3463;
>> 1

记录在交易中的证明:

select count(*)
from transaction
where payment_transaction_id = 3463;
>> 1

但是连接不起作用。

select count(*)
from card_transaction_log a, transaction b
where a.payment_transaction_id = b.payment_transaction_id
and a.payment_transaction_id = 3463;
>> 0

老实说,我以前在 mysql 中从未见过这样的事情。我什至和我的同事核实过,以确保我没有发疯和/或变笨。

更新:

虽然这与上面相同,但此查询也不起作用:

select count(*)
from card_transaction_log a
join transaction b
on a.payment_transaction_id = b.payment_transaction_id
where a.payment_transaction_id = 3463;
>> 0

最佳答案

payment_transaction_id 是什么类型?我怀疑它不是 INT 而是 VARCHAR。如果您尝试将 VARCHAR 与 INT 进行比较,MySQL 会自动将其转换为 INT,但可能会发生一些奇怪的事情,例如:

'3463' = 3463

还有

'3463a' = 3463

但是

'3463a' != '3463b'

请参阅 fiddle here .您可以像这样测试您的查询:

select count(*)
from card_transaction_log
where payment_transaction_id = '3463';

而且我怀疑您的查询中至少有一个会返回 0。或者您可以强制您的连接使用整数值:

select count(*)
from card_transaction_log a
join transaction b
on a.payment_transaction_id+0 = b.payment_transaction_id+0
where a.payment_transaction_id = 3463;

关于mysql - 简单的 MySQL 加入 varchar(100) 字段不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com