如果 ID 存在于另一个表中,则拉行

Posted

技术标签:

【中文标题】如果 ID 存在于另一个表中,则拉行【英文标题】:pull row if ID exists in another table 【发布时间】:2015-08-06 02:40:24 【问题描述】:

我构建了这个查询来从两个表 wp_sshow_sales+tickets 和 live_15 中提取所有数据,它非常适合。但如果 wp_sshow_sales.saleID 在 wp_sshow_verifys.verifyID 中找到,我希望它只从 wp_sshow_sales 和门票中提取

如您所见,我尝试过使用 IF 和 LEFT JOIN,但我无法解决这个问题。我在该 IF 语句的某处遇到错误。

SELECT 
    wp_sshow_sales.saleFirstName as first,
    wp_sshow_sales.saleLastName as last,
    wp_sshow_sales.saleEMail as email,
    wp_sshow_sales.salePPStreet as street,
    wp_sshow_sales.salePPCity as city,
    wp_sshow_sales.salePPState as state,
    wp_sshow_sales.salePPZip as zip,
    wp_sshow_tickets.ticketQty as qty
    IF (wp_sshow_verifys.verifyID IS NULL,TRUE,FALSE) verify
    FROM wp_sshow_sales, wp_sshow_tickets 
    WHERE wp_sshow_sales.saleID = wp_sshow_tickets.saleID
    LEFT JOIN verify ON wp_sshow_sales.saleID = wp_sshow_verifys.verifyID

    UNION ALL
    SELECT
    live_15.firstname as first,
    live_15.lastname as last,
    live_15.email as email,
    live_15.street as street,
    live_15.city as city,
    live_15.state as state,
    live_15.zip as zip,
    live_15.qty as qty
    FROM live_15

    ORDER BY $order ASC

【问题讨论】:

我相信我的 ON 语句还有另一个问题...我不断收到 #1054 - Unknown column 'wp_sshow_sales.saleID' in 'on Clause' 我看不出我在哪里弄乱了那个起来。 【参考方案1】:

您的IF 语句中有一个syntax 错误,因为在此之前您缺少comma

SELECT 
    wp_sshow_sales.saleFirstName as first,
    ...
    wp_sshow_tickets.ticketQty as qty, <-----
    IF (wp_sshow_verifys.verifyID IS NULL,TRUE,FALSE) verify
    FROM wp_sshow_sales, wp_sshow_tickets 
    WHERE wp_sshow_sales.saleID = wp_sshow_tickets.saleID
    LEFT JOIN verify ON wp_sshow_sales.saleID = wp_sshow_verifys.verifyID

我猜你的WHERE 子句也会有错误,应该写在JOIN 语句之后。

如果你想从wp_sshow_saleswp_sshow_tickets 中提取,只有在wp_sshow_verifys 中找到saleID,请使用INNER JOIN 而不是LEFT JOIN

有关JOIN的更多信息,请check this SO question。

【讨论】:

您还需要切换 WHERELEFT JOIN 子句。它应该看起来像:FROM ... LEFT JOIN table ON ... WHERE ...

以上是关于如果 ID 存在于另一个表中,则拉行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 根据记录是不是存在于另一个表中选择布尔值

在一个表中查找不存在于另一个表中的ID

从一个表中返回不存在于另一个表中的值

如果记录存在于另一个表中,则条件格式详细信息行

Laravel - 从一个表中获取不存在于另一个表中的记录,并附加了 where 子句

如果行存在于另一个表中,如何更新 (SQL)