0

我有一个小的 MySQL 问题。我想选择我的表中包含用户不拥有的数据的所有行(它是一个交换工具)。

例子:

id  |  owner  |  event
----------------------
1   |    4    |    3
2   |    5    |    3
3   |    3    |    2
4   |    5    |    6

我是业主#4。我想查看除我已经拥有的事件之外的所有事件,所以我想得到如下结果:

event |  offered by
-------------------
2     |     3
6     |     5

是否可以通过 SQL 进行选择,或者我是否必须选择所有用户自己的事件并id从结果中删除所有其他具有相同事件的事件?

4

3 回答 3

7
SELECT  a.event, a.owner AS `Offered By`
FROM    tableName a
WHERE   a.event NOT IN
        (
            SELECT  b.event
            FROM    TableName b
            WHERE   owner = 4
        )

或者通过使用JOIN我更喜欢的,

SELECT  a.event, a.owner AS `Offered By`
FROM    tableName a
        LEFT JOIN tableName b
            ON  a.event = b.event AND
                b.owner = 4
WHERE   b.event IS NULL

输出

╔═══════╦════════════╗
║ EVENT ║ OFFERED BY ║
╠═══════╬════════════╣
║     2 ║          3 ║
║     6 ║          5 ║
╚═══════╩════════════╝
于 2013-04-04T14:17:02.503 回答
0
SELECT event, offered_by FROM events_table WHERE owner <> 4

events或者如果它们是 2 张桌子,例如offers

SELECT tb1.event, tb1.offered by FROM offers as tb1
INNER JOIN events as tb2 on tb1.event = tb2.event
WHERE tb2.owner <> 4
于 2013-04-04T14:16:31.243 回答
-1

我只是在这里假设 php

SELECT event
FROM EXAMPLE_TABLE
WHERE owner NOT IN '$owner_id'
于 2013-04-04T14:17:18.460 回答