【问题标题】:mysql left join but return blank rowmysql左连接但返回空白行
【发布时间】:2010-10-06 18:53:43
【问题描述】:

我有一个小问题,我有这个设置......

表:商品名称 { trade_id : 1 trade_name : Olivers guest house}

表客户{名称:我,trade_id:1:blah:blah}

我进行左连接以将商品名称传递给客户,就好像您是宾馆一样,您将拥有商品名称,但作为房东,您将没有商品名称,但我仍然希望返回结果。

所以一切都很好......不。我将结果显示在一个按邮政编码和贸易搜索的表格中。

我选择 %postcode% 之类的邮政编码和 %trade% 之类的交易地点,这将带回匹配的条件。

由于左连接不会为房东带来交易,因此任何没有交易的东西都被排除在结果之外。

我想知道是否有某种方法可以说明该行是否不存在返回一个空白字段。

应该是这样的:

array([0] => array([0] =>[name] = "something" ["trade_name"] = "olivers guest house" [type] = "guest house").
             array[0] => [name] = "something" ["trade_name"] = " " [type] = "landlord");

据我所知

array([0] => array([0] =>[name] = "something" ["trade_name"] = "olivers guest house" [type] = "guest house").
             array[0] => [name] = "something" ["trade_name"] = "NULL" [type] = "landlord");

像 %trade% 这样的 where trade_name 无法使用。

我希望我没有使描述过于复杂。

我希望只有某种类型的加入可以做到这一点,但我看不到一个:(

谢谢大家

【问题讨论】:

  • 请您至少提供您正在使用的 SELECT 查询好吗?

标签: mysql return join


【解决方案1】:

在您的查询(我认为您尚未发布)中,您应该替换:

SELECT trade_name, ....

与:

SELECT COALESCE(trade_name, ' '), ....

或者您也可以使用 MySQL 特定功能IFNULL:

SELECT IFNULL(trade_name, ' '), ....

【讨论】:

  • 谢谢,我现在试试,然后回复你:)
  • 它做了我希望它作为结果集做的事情,但不适用于类似的事情:
  • 它执行我希望它作为结果集执行的操作,但不能像我所说的那样使用 SQL:IFNULL(details_business_trading_details.trading_name,"7") AS trading_name,然后我说 WHERE common_details_address.postcode LIKE '%%' AND details_business_trading_details.trading_name LIKE '%%' 但我猜由于它的工作原理,它不起作用
  • @stephen cooper:请记住,details_business_trading_details.trading_name 可以为 NULL,这将导致您的 WHERE 子句失败。你也需要在那里使用 COALESCE 或 IFNULL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 2014-01-16
  • 1970-01-01
  • 2013-02-18
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多