0

我需要检查 10 行中的 3 列,我们按降序匹配用户 ID 并找到用户 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";

当我们在每一行的列中匹配用户 ID 2 时,输出应该是这样的:

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

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

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

谢谢希望我说清楚了:|

4

2 回答 2

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
于 2013-03-31T06:35:12.083 回答
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

当您选择2for$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表别名的字段进一步向下钻取。

于 2013-03-31T06:59:23.397 回答