我需要检查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.
我还没有尝试过任何代码,因为我不知道如何处理这个问题。
谢谢希望我清楚自己:|
答案 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
字段进一步向下钻取。