mysql - mysql上的sql关于join

标签 mysql

下面的代码提供了太多的结果 事实上,我想列出从不买东西的客户 我该如何修复下面的代码

SELECT
webboard.listweb.id,
webboard.listweb.iditempro,
webboard.listweb.url,
webboard.listweb.useradddate,
webboard.listweb.expiredate,
webboard.prorecord.urlpostonweb
webboard.prorecord.urlpostonweb
FROM
webboard.listweb ,
webboard.prorecord

Where listweb.id Not In 
             (select webboard.prorecord.idlist From webboard.prorecord )

最佳答案

使用语法

FROM
webboard.listweb ,
webboard.prorecord

将在涉及的表上执行笛卡尔或交叉连接。因此,对于表 listweb 中的每一行,都会显示 prorecord 中的所有行。

您需要使用 INNER JOIN 来仅选择 listweb 中与 prorecord 表中有相关​​行的行。 prorecord 表中标识行(您的主键)的字段是什么?外键字段的名称是什么?

编辑:只需重新阅读问题和评论,我发现您希望 listweb 中的行没有预录

您的 SELECT 将如下所示:

SELECT
  webboard.listweb.id,
  webboard.listweb.iditempro,
  webboard.listweb.url,
  webboard.listweb.useradddate,
  webboard.listweb.expiredate,
  webboard.prorecord.urlpostonweb
  -- webboard.prorecord.urlpostonweb -- You have this field twice
FROM webboard.listweb LEFT JOIN webboard.prorecord
    ON webboard.listweb.id = webboard.prorecord.idlist -- I'm guessing at the foreign key here
WHERE webboard.prorecord.idlist IS NULL

关于mysql - mysql上的sql关于join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802698/

相关文章:

php - Laravel Eloquent 基本查询问题

mysql - Symfony3,获取用户输入并保存到mysql中

php - 如何在带有 WHILE 获取行的 MySQL 查询中使用 PHP 变量?

mysql - 无法远程将 CSV 加载到 MySQL 中

MySQL v5.7.4 - 是否不再可以使用 "unique index"删除重复项?

php - 如何在mysql和php中使用日期选择时间戳

MYSQL 其中至少一列不为空

MySQL 全文搜索 '+this +week' 未按预期工作

php - 让用户创建自己的自定义选择菜单选项,同时保持应用程序默认设置

mysql - 如何检查同一行中两列的值之和是否恰好为 100 作为 mysql 中的结果