簡體   English   中英

MySQL查詢不檢索不同的值

[英]MySQL query not retrieving distinct values

上下文:我正在從 MySQL 數據庫中檢索股票數據(例如日期、開盤價、最低價、收盤價和最高價),並且我在表上有一些重復數據。 為了避免這種情況,我嘗試在查詢中使用DISTINCT ,但是,我一直在Date上收到一些重復項。 我相信這是因為雖然有些Date是相同的,但開盤價、最高價、最低價和收盤價卻不同,因此無論如何我都會得到重復的日期。

我嘗試使用UNION來獲取不同的日期,然后在我的查詢中使用 2nd select 來選擇開盤價、最高價、最低價和收盤價,但沒有成功:

(SELECT DISTINCT DATE) 
UNION 
(SELECT Open, High, Low, Close 
FROM symbolsv2 
WHERE ticker='AAPL' 
AND `intval`='1d' 
AND Open 
AND High 
AND Low 
AND Close IS NOT NULL 
ORDER BY DATE)

這就是我在 MySQL 上的一些數據發生的情況: 結果

如您所見,日期相同,但價格不同(這與我正在做的網絡抓取有關,它可能會不時出現故障並檢索同一日期的價格,但在不同時期那天)。

這是我原來的 SQL 查詢:

if (isset($_POST['submit'])) {
    $ticker = $_POST['ticker'];
    $intval = $_POST['intval'];
    $Date = $_POST['date'];

    $stmt = $conn->prepare("SELECT DISTINCT Date, Open, High, Low, Close 
                            FROM symbolsv2 
                            WHERE ticker=? 
                            AND `intval`=? 
                            AND Date>=? 
                            AND Date 
                            AND Open 
                            AND High 
                            AND Low 
                            AND Close IS NOT NULL 
                            ORDER BY Date");
    $stmt->bind_param("sss", $ticker, $intval, $Date);
    $stmt->execute();

    $result = $stmt->get_result();
    while ($data = $result->fetch_assoc()) {
        $data_array[] = $data;
    }
    $stmt->close();
}
$conn->close();
?>

我該怎么做才能不再有Date重復項? 例如,我不保留第 1 條記錄(例如,保留第 76 個索引並刪除第 77 個索引)。

我發現了這個 SO - SQL: Two select statements in one query ,但我無法讓它工作

在此先感謝您,歡迎提供任何幫助(我對 SQL 還很陌生)

我猜您想合並您擁有的任何重復記錄。 您可以使用此 GROUP BY 查詢。

SELECT Date, ticker, intval,
       AVG(Open) AS Open, 
       MAX(High) AS High,
       MIN(Low)  AS Low,
       AVG(Close) AS Close 
  FROM symbolsv2 
 WHERE ticker=? 
   AND `intval`=?
   AND Date >= ?
 GROUP BY Date, ticker, intval;

這將為 Date、ticker 和 intval 的每個不同組合生成一行。 它通過平均多個開盤價和收盤價並取最高價和最低價中的最高價來處理可能具有不同數據的重復行。 (當然,您想如何處理這些具有不同值的重復項取決於您。我只是猜測。)

UNION不像你想象的那樣工作。它連接兩個結果集。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM