Mysql

Left Join 語句返回多行而不是一行

  • June 30, 2021

有兩個表,即sku沒有country任何匹配的列。我需要根據表中的值從國家表中檢索一個唯一printable_name欄位。下面我的 SQL 語句的結果給出了多行而不是一行。我只想要國家表中的記錄。c_code``sku

我正在嘗試將以下 SQL 與 JOIN 語句組合為一個,以便使用單個 SQL 語句獲取國家/地區名稱。

$vendor_sku = $my_line_item['sku'];
                   
                   // Build SQL to retrieve country name.
                   $sql = "SELECT c_code FROM sku WHERE item_sku = '" . $vendor_sku . "'";
                   $sql = "SELECT printable_name FROM country WHERE numcode = '" . $c_code . "'";

SELECT country.printable_name
 FROM country INNER JOIN sku ON country.numcode = sku.c_code
WHERE country.numcode = "124"

國家表的一部分是:

在此處輸入圖像描述

sku 表的一部分是:

在此處輸入圖像描述

在此處輸入圖像描述

正如您所說,兩個表之間沒有匹配的行,您無法根據 sku.numcode 從國家表中檢索唯一值。您需要在與國家表匹配的 sku 表上添加一個外鍵,使用一些唯一值(可能是 iso 或 numcode,如果它是 int 欄位 numcode 更好,但這需要在此表中是唯一的)。

如果您的解釋中有錯誤,並且 sku.c_code 與 country.numcode 匹配,您可以執行以下操作:

select c.printable_name from country c inner join sku s on c.numcode = s.c_code where s.c_code = ‘124’ limit 1;

引用自:https://dba.stackexchange.com/questions/295036