select * where distinct

时间:2012-11-19 01:15:41

标签: php mysql sql

我正在尝试做这样的事情:

select * from receipt where branch=:branch AND distinct transactionid

然而,这不起作用并带来所有结果。我只需要获得符合我需要的所有信息,并且有一个独特的transaction。因此,这可能包括firstname lastname以及数据库中每个列表存储的所有信息,因为我稍后会使用所有这些信息。

让我说我有:

+--------+-----------+----------+-----------------+
| first  |  last     |  item    |  transactionid  |
+--------+-----------+----------+-----------------+
| jack   |  sparrow  |  water   |    1234         |
| jack   |  sparrow  |  food    |    1234         |
| jack   |  sparrow  |  wood    |    1234         |
+--------+-----------+----------+-----------------+

我希望所有带有名字jack(其中任何一个)的列表都有一个不同的transactionid ...

甚至可以这样做吗?

1 个答案:

答案 0 :(得分:4)

尝试这个,

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  transactionID, MIN(item) minItem
            FROM    tableName
            GROUP BY transactionID
        ) b ON a.transactionID = b.transactionID AND
                        a.item = b.minItem
// -- WHERE branch =: branch

感谢您编辑zerkms

那么子查询的作用是什么?

嗯,只是transactionID 获得一个项目。您也可以使用MAX