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_rowidcc_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=?)");