MYSQL select 查询返回不需要的结果
MYSQL select query returning undesired results
我在 MySQL 中有这个 table;
我试图通过此查询在第 10 行中获取 cc_rowid 10 和 cc_type;
$stmt = $mysqli->prepare("SELECT MAX(cc_rowid),MAX(cc_type)
FROM clock_clockings
WHERE cc_eeno =(SELECT cc_eeno FROM clock_clockings WHERE cc_rowid=?)");
它给了我 cc_rowid =10 和 cc_type=Out。
我不明白如何改进它以获得预期的结果。我将不胜感激任何帮助。谢谢
如果您想要获得最大值 cc_rowid 的 cc_type,您将需要像这样的东西:
SELECT cc_rowid, cc_type
FROM clock_clockings
WHERE cc_rowid = (SELECT max(cc_rowid) FROM clock_clockings);
您可以对内部联接和相同的子查询执行相同的操作。一个六个,另一个六个。您可以在子查询中添加更多 WHERE 逻辑,以过滤掉 max
聚合
中不需要的任何其他内容
JNevill 的回答很适合您。但是我想补充一下您当前的问题是如何引起的:
$stmt = $mysqli->prepare("SELECT MAX(cc_rowid),MAX(cc_type)
FROM clock_clockings
WHERE cc_eeno =(SELECT cc_eeno FROM clock_clockings WHERE cc_rowid=?)");
您目前正在尝试获取 cc_rowid
和 cc_type
的最大值,因为 cc_type 数据是一个字符串,它正在获取内容最大的那个 -最长 - 这就是 "Out" 被呈现的原因。
您不需要选择 MAX,所以请尝试:
$stmt = $mysqli->prepare("SELECT MAX(cc_rowid), cc_type
FROM clock_clockings
WHERE cc_eeno =(SELECT cc_eeno FROM clock_clockings WHERE cc_rowid=?)");
我在 MySQL 中有这个 table;
我试图通过此查询在第 10 行中获取 cc_rowid 10 和 cc_type;
$stmt = $mysqli->prepare("SELECT MAX(cc_rowid),MAX(cc_type)
FROM clock_clockings
WHERE cc_eeno =(SELECT cc_eeno FROM clock_clockings WHERE cc_rowid=?)");
它给了我 cc_rowid =10 和 cc_type=Out。
我不明白如何改进它以获得预期的结果。我将不胜感激任何帮助。谢谢
如果您想要获得最大值 cc_rowid 的 cc_type,您将需要像这样的东西:
SELECT cc_rowid, cc_type
FROM clock_clockings
WHERE cc_rowid = (SELECT max(cc_rowid) FROM clock_clockings);
您可以对内部联接和相同的子查询执行相同的操作。一个六个,另一个六个。您可以在子查询中添加更多 WHERE 逻辑,以过滤掉 max
聚合
JNevill 的回答很适合您。但是我想补充一下您当前的问题是如何引起的:
$stmt = $mysqli->prepare("SELECT MAX(cc_rowid),MAX(cc_type)
FROM clock_clockings
WHERE cc_eeno =(SELECT cc_eeno FROM clock_clockings WHERE cc_rowid=?)");
您目前正在尝试获取 cc_rowid
和 cc_type
的最大值,因为 cc_type 数据是一个字符串,它正在获取内容最大的那个 -最长 - 这就是 "Out" 被呈现的原因。
您不需要选择 MAX,所以请尝试:
$stmt = $mysqli->prepare("SELECT MAX(cc_rowid), cc_type
FROM clock_clockings
WHERE cc_eeno =(SELECT cc_eeno FROM clock_clockings WHERE cc_rowid=?)");