MYSQL选择查询返回不需要的结果

时间:2015-03-20 18:45:31

标签: php mysql select

我在MySQL中有这个表; enter image description here

我试图通过此查询获取第10行的cc_rowid 10和cc_type In;

    $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。

我不了解如何改善这一点以获得理想的结果。我将不胜感激任何帮助。感谢

2 个答案:

答案 0 :(得分:1)

如果您尝试获取max cc_rowid的cc_type,则需要以下内容:

SELECT cc_rowid, cc_type 
FROM clock_clockings 
WHERE cc_rowid = (SELECT max(cc_rowid) FROM clock_clockings);

您可以使用内部联接和相同的子查询执行相同的操作。六分之一,另外六分之一。您可以在子查询中放置更多WHERE逻辑,以过滤掉max聚合

中您不想要的任何其他内容

答案 1 :(得分:0)

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的MAX值,因为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=?)");