0

我正在寻找一种方法来选择 joe 的电子邮件地址,这样每次我运行选择查询时,我只会得到一个按 id 顺序返回的电子邮件地址。有点循环的结果..

      so on first select I get joe@blogs.com 
      and then second I get joe@gmail.com
      and third joe@outlook.com
      and next joe@blogs.com as there are only three entries

如果你明白我的意思。

            addresses
            ---------------------
            id|name|email
            ---------------------
            1 |joe |joe@blogs.com
            2 |joe |joe@gmail.com
            3 |joe |joe@outlook.com
4

2 回答 2

1

试一试:

CREATE TABLE #results (id INT, name VARCHAR(50), email VARCHAR(100))
DECLARE @currentID INT;

WHILE(1 = 1)
BEGIN
    SET @currentID =
    (SELECT TOP 1 t.id 
    FROM [YOURTABLE] t
    LEFT JOIN #results r
        ON r.id = t.id
    WHERE t.name = 'joe'
        AND r.id IS NULL)

    IF @currentID IS NULL
        BREAK;

    SELECT * FROM [YOURTABLE] WHERE id = @currentID 

    INSERT INTO #results
    SELECT TOP 1 t.id, t.name, t.email 
    FROM [YOURTABLE] t
    WHERE t.id = @currentID 
END
于 2013-11-14T17:20:06.793 回答
0

我认为最好的方法是将下一个电子邮件 ID 存储在对用户具有外键的字段中。这将为您提供将使用数据库的任何内容之间的最大互操作性。

请注意,因为如果电子邮件被删除,您会遇到问题。

于 2013-11-14T17:08:50.310 回答