在一行中的三列中查找用户标识

时间:2013-03-31 06:28:21

标签: php mysql

我需要检查10行中的3列,我们按降序匹配userid并找到用户ID并显示结果

假设这是我的表

表名供稿

id   buy_id sell_id sold_id
30     2      5       3
29     6      4       9  
28     44     21      36
27     26     2       15
26     4      2       9
25     8      7       2
24     11     2       3
23     2      1       9  

例如:我们需要找到用户ID 2 并将限制设置为10输出。

我只使用一列,所以我不知道如何匹配一行中的3列。

我想要10个输出......

if userid = buy_id then echo "buyer";
if userid = sell_id then echo "seller";
if userid = sold_id then echo "third party";

当我们在每行的列中匹配userid 2时,输出应为此:

1.buyer
2.seller
3.seller
4.third party
5.seller
6.buyer

因为只有6个用户ID 2的活动,所以只有6个输出,但我需要最多10个和最小值0.

我还没有尝试过任何代码,因为我不知道如何处理这个问题。

谢谢希望我清楚自己:|

2 个答案:

答案 0 :(得分:1)

select id,
       case when buy_id = $userid then "buyer"
            when sell_id = $userid then "seller"
            else "third party"
       end who
from feeds
where $userid in (buy_id, sell_id, sold_id)
limit 10

答案 1 :(得分:1)

试试这个:

SELECT *
FROM (
  (SELECT buy_id userid, id, 'buyer' type
   FROM feeds)
  UNION
  (SELECT sell_id userid, id, 'seller' type
   FROM feeds)
  UNION
  (SELECT sold_id userid, id, 'third party' type
   FROM feeds)
) feeds_data
WHERE feeds_data.userid = $CHOOSE_USERID
LIMIT 10

2选择$CHOOSE_USERID时,应返回如下表格:

| userid | id |    type     |
|--------|----|-------------|
| 2      | 30 | buyer       |
| 2      | 27 | seller      |
| 2      | 26 | seller      |
| 2      | 25 | third party |
| 2      | 24 | seller      |
| 2      | 23 | buyer       |

您可以通过更改$CHOOSE_USERID的值来自定义查询,然后使用id表别名type字段或feeds_data字段进一步向下钻取。