MySQL INNER JOIN 查询多个匹配项,除非 if

标签 mysql sql

我有一个看起来像这样的表格:

tableid memberid    date
1       +123456     2013-12-04 9:00:00
1       9876        2013-12-04 10:44:00
1       8765        2013-12-04 11:15:00
1       6900        2013-12-04 12:20:00
1       7654        2013-12-04 15:20:00
1       6250        2013-12-04 15:20:00
1       5655        2013-12-04 15:25:00
2       +145879     2013-12-04 15:50:00
2       5668        2013-12-04 16:12:00
2       3654        2013-12-04 17:25:00 
2       6250        2013-12-04 19:02:00
2       3447        2013-12-04 19:33:00

我使用以下查询来获取多个匹配项:

SELECT *
FROM connector AS c1
INNER JOIN connector AS c2 ON c1.tableid=c2.tableid
INNER JOIN connector AS c3 ON c1.tableid=c3.tableid

WHERE
    (c1.memberid LIKE '+1%')
    AND (c2.memberID LIKE '56%')
    AND (c3.memberID = 6250)
    AND  c2.date BETWEEN '2013-12-04 0:00:00' and '2013-12-04 23:59:59'

这最初是有效的,因为上面的代码输出以下内容:

tableid memberid    date                    tableid     memberid    date                    tableid memberid    date
1       +123456     2013-12-04 9:00:00      1           5655        2013-12-04 15:25:00     1       6250        2013-12-04 15:20:00
2       +145879     2013-12-04 15:50:00     2           5668        2013-12-04 16:12:00     2       6250        2013-12-04 19:02:00

我需要的是省略任何包含 memberid6900tableid 组。

因此输出应该如下:

tableid memberid    date                tableid memberid    date                tableid memberid    date
2       +145879     2013-12-04 15:50:00 2       5668        2013-12-04 16:12:00 2       6250        2013-12-04 19:02:00

由于 tableid 1memberid 列中有 6900

非常感谢您的帮助。

最佳答案

SELECT *
FROM connector AS c1
INNER JOIN connector AS c2 ON c1.tableid=c2.tableid
INNER JOIN connector AS c3 ON c1.tableid=c3.tableid

WHERE
    (c1.memberid LIKE '+1%')
    AND (c2.memberID LIKE '56%')
    AND (c3.memberID = 6250)
    AND  c2.date BETWEEN '2013-12-04 0:00:00' and '2013-12-04 23:59:59'
    AND NOT EXISTS (SELECT 1 FROM connector c4 WHERE c1.tableid=c4.tableid AND c4.memberid = 6900)

关于MySQL INNER JOIN 查询多个匹配项,除非 if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001617/

相关文章:

sql - Spark SQL语句广播

mysql - 为什么 MySQL 在 "Error Code: 1054. Unknown column ' 中给我 'on clause' x' 当我在我的 SELECT 中定义它时?

mysql - 我该如何解决 'Error Cannot add foreign key constraint'?

mysql - mysql统计重复数据的方法

java - 插入查询中 preparedStatement 的问题

php - SQL返回错误结果

sql - 动态索引创建 - SQL Server

mysql - 检查字段是否存在且不为空

mysql - SQL 使用 count 连接两个没有公共(public)列的表

php - 将 php 文件中的代码从 mysql 更改为 mssql