」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何只檢索 LEFT JOIN 中的第一行?

如何只檢索 LEFT JOIN 中的第一行?

發佈於2024-11-18
瀏覽:441

How to Retrieve Only the First Row in a LEFT JOIN?

僅檢索LEFT JOIN 中的第一行

在SQL 中,執行LEFT JOIN 操作可能會導致右表中出現多行與左表中的一行相符。在某些情況下,希望為左表中的每一行僅檢索右表中的第一行。

考慮以下簡化的資料結構:

**Feeds**
id | title | content
----------------------
1  | Feed 1 | ...

**Artists**
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2

**feeds_artists**
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1

要檢索提要文章並僅將第一位藝術家與每個提要相關聯,可以嘗試使用以下語法:

SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
    SELECT feeds_artists.feed_id FROM feeds_artists
    WHERE feeds_artists.feed_id = feeds.id
    LIMIT 1
)
WHERE feeds.id = '13815'

但是,這種方法可能不會產生預期的結果。要實現該目標,請考慮以下替代方案:

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
    SELECT
      MIN(fa.artist_id) a_id
    FROM feeds_artists fa 
    WHERE fa.feed_id = f.id
)

此修改使用 MIN() 函數來確定具有最低 ID 的藝術家,假設藝術家 ID 隨著時間的推移而增加。因此,LEFT JOIN 將僅檢索與每個提要關聯的第一個藝術家。

最新教學 更多>
  • 非管理員使用者能否在不影響系統安全的情況下啟動 Windows 服務?
    非管理員使用者能否在不影響系統安全的情況下啟動 Windows 服務?
    從沒有管理員權限的應用程式啟動 Windows 服務許多方案涉及從單獨的應用程式啟動或停止 Windows 服務。然而,出於安全考慮,這對於非管理員用戶來說似乎受到限制。如何克服這個限制,在不影響系統穩定性的情況下,讓使用者對服務管理進行精細化控制? 解決方案:修改服務權限這個問題的關鍵在於修改服務...
    程式設計 發佈於2024-11-18
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-18
  • 如何在 Python 2 原始碼中使用 UTF-8 編碼?
    如何在 Python 2 原始碼中使用 UTF-8 編碼?
    在Python 原始碼中使用UTF-8 編碼在某些情況下,使用時可能會遇到與非ASCII 字元相關的錯誤Python 原始碼中的Unicode 字串。這是因為 Python 2 原始檔的預設編碼不是 UTF-8。 聲明 UTF-8 字串在 Python 3 中,UTF-8 是預設編碼來源編碼,因此可...
    程式設計 發佈於2024-11-18
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-18
  • 如何從 PHP 字串中的字元中刪除重音符號而不遇到意外的替換?
    如何從 PHP 字串中的字元中刪除重音符號而不遇到意外的替換?
    如何從 PHP 字串中的字元中刪除重音符號? 在 glibc 實作中使用 iconv 可能會導致意外的字元替換,例如問號當嘗試從 PHP 字串中的字元中刪除重音符號時。 問題源自於 iconv 和 glibc 實作之間的不相容,這不如首選的 libiconv 實作那麼可靠。若要解決此問題,請確保 P...
    程式設計 發佈於2024-11-18
  • 如何在沒有外部依賴的情況下使用Python在Linux中擷取螢幕截圖?
    如何在沒有外部依賴的情況下使用Python在Linux中擷取螢幕截圖?
    使用 Python 在 Linux 中捕獲螢幕截圖在各種 Linux 環境中,需要以不顯眼的方式捕獲螢幕截圖以用於文件或分析目的。利用 Python 強大的腳本功能,我們探索了一種在不透露任何可見幹擾的情況下截取螢幕截圖的腳本方法。 下面的 Python 腳本利用 GTK 綁定來檢索螢幕解析度和像素...
    程式設計 發佈於2024-11-18
  • 如何從不同子網域上的 iFrame 取得父頁面的 URL?
    如何從不同子網域上的 iFrame 取得父頁面的 URL?
    從iFrame 訪問父級URL:限制和解決方法從iFrame 訪問父級框架的URL 可能是一項挑戰,特別是當iFrame 位於不同的子域上。這是由於跨站點腳本 (XSS) 預防措施所施加的安全限制。 從與父框架相同的域和子域存取 iFrame 時,應使用諸如 Parent 之類的表達式直接存取父級的...
    程式設計 發佈於2024-11-18
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-18
  • 如何與非技術人員進行技術對話?
    如何與非技術人員進行技術對話?
    我的葡萄牙老師總是在解釋結束時說:我了解自己了嗎? 因為如果不理解,所有的解釋都毫無價值! 您是否曾嘗試向其他領域的人解釋技術主題卻無法被理解? 這對任何部門來說都是一個挑戰,如果從一開始就做什麼達成協議,缺乏溝通會阻礙交付時間,甚至導致採取完全相反的路徑。 我經歷了好幾次這樣的事情,因為我...
    程式設計 發佈於2024-11-18
  • 將布林值轉換為整數總是得到 0 或 1 嗎?
    將布林值轉換為整數總是得到 0 或 1 嗎?
    布林值轉換為整數時是否總是為零或一? 當布林值轉換為整數時,許多編譯器似乎只保留 0 或 1,這引發了有關此行為可靠性的問題。讓我們來看一個例子:int a = 2; bool b = a; int c = 3 b; // What is the result? 4 or 5?答案: 是的,bo...
    程式設計 發佈於2024-11-18
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段中:action=''而不是:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST數組:表單提交後使用var_dump檢查$_POST 陣列的內容。...
    程式設計 發佈於2024-11-18
  • 為什麼從 std::string 函數傳回 C 字串文字有時似乎有效,但仍然是未定義的行為?
    為什麼從 std::string 函數傳回 C 字串文字有時似乎有效,但仍然是未定義的行為?
    從std::string 函數回傳C 字串文字並呼叫c_str()在C 中,從std::string 函數傳回C 字串文字是不明智的做法可能會導致不確定的行為。然而,一個常見的誤解是這段程式碼應該會失敗,儘管它在某些情況下似乎可以運作。 當「是我!!」傳遞給 myFunction() 時,C 字串文...
    程式設計 發佈於2024-11-18
  • 如何使用 array_diff 來決定一個陣列是否包含另一個陣列中的所有值?
    如何使用 array_diff 來決定一個陣列是否包含另一個陣列中的所有值?
    使用 array_diff 檢查陣列值包含使用 array_diff 檢查陣列值包含$all = array ( 0 =&gt; 307, 1 =&gt; 157, 2 =&gt; 234, 3 =&gt; 200, 4 =&a...
    程式設計 發佈於2024-11-18
  • 如何在 Go 中正確實作自訂類型的 Valuer 和 Scanner?
    如何在 Go 中正確實作自訂類型的 Valuer 和 Scanner?
    Golang 類型斷言:為自訂型別實作Valuer 和Scanner在Go 中使用自訂型別(例如基於字串的型別)時,可能需要實作Valuer 和Scanner 介面來與資料庫驅動程式互動。這使得自訂類型能夠與資料庫值進行序列化和反序列化。 在提供的程式碼中,嘗試實作 Role 型別及其關聯的 Val...
    程式設計 發佈於2024-11-18
  • 如何讓 MySQL 截斷資料而不是在插入時引發錯誤?
    如何讓 MySQL 截斷資料而不是在插入時引發錯誤?
    MySQL 插入行為:截斷與錯誤MySQL 插入行為:截斷與錯誤MySQL 在嘗試插入超出列長度限制的資料時表現出不同的行為:截斷或錯誤。在這種情況下,我們的目標是修改 MySQL 實例以截斷資料而不是引發錯誤。 解決方案:停用 STRICT_TRANS_TABLES 和 STRICT_ALL_TA...
    程式設計 發佈於2024-11-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3