背景:
我首先被要求做一个使用mysql作为数据库的网站,在完成并发送之后,客户要求我将其转换为mssql,以及3层。
我做了用于在服务器之间传输数据的类和函数,所以 3 层位大约完成了一半。我现在正在苦苦挣扎的是MsSQL。
问题:
问题的 MySQL 版本如下所示:
select a.id as a_id, a.first_name, a.last_name, a.agent_code,
b.id as b_id, b.user_id, b.status_admin
from tbl_user a
inner join tbl_testimonia b
on a.id = b.user_id
where b.status_admin=0
group by a.id
order by b.id desc
它所做的是将尚未批准的推荐返回给每个用户;
我被困在哪里:
我无法将其转换为 MSSQL
我最好的尝试:
- 创建视图;
如:
create view test as
(
select a.id as a_id, a.first_name, a.last_name, a.agent_code,
b.id as b_id, b.user_id, b.status_admin
from tbl_user a inner join tbl_testimonia b on a.id = b.user_id
where b.status_admin=0 and a.id in
(
select a.id from tbl_user a
inner join tbl_testimonia b
on a.id = b.user_id
where b.status_admin=0
group by a.id
)
)
这选择了我想要的,但是创建视图的id字段不能被分组,这意味着 id 字段不是唯一的并且可以具有相同的值。
我想到目前为止我的问题是,我如何在视图中唯一地选择 id 字段?当然我可以在 PHP 中做到这一点,但我可以在一个月前第一次遇到问题时做到这一点。
我一直试图找到答案一段时间,但似乎无法找到我的问题独有的答案
- 编辑:MSSQL 不起作用,因为即使子查询选择唯一 ID ,主查询中的in语句也使这无关紧要
编辑:示例输出::~(在 MySql 中省略了第三个字段)
| a_id | firstN | LastN | agent_code | b_id | user_id |status_admin| +--------------------------------------------------------------------------+ | 32 | fn1 | ln1 | AC123213 | 14 | 32 | 0 | | 41 | fn2 | ln2 | 12345678 | 15 | 41 | 0 | | 32 | fn1 | ln1 | AC123213 | 16 | 32 | 0 |
编辑:问题为 Lieven 解决了一个简单的答案