关于SQL语句
今天写网站的时候很囧啊,发现查找用户权限的时候无缘无故的同一个权限重复出现很多次
修改后的SQL语句如下
SELECT
node
.
id
,
node
.
name
,
access
.
role_id
from
think_role_user
AS
user
,
think_access
AS
access
,
think_node
AS
node
WHERE
user
.
user_id
=
5
AND
access
.
role_id
=
user
.
role_id
AND
access
.
level
=
3
AND
access
.
node_id
=
node
.
id
LIMIT
0
,
30
其中NODE是权限节点,ACCESS是权限和用户所在组对应的节点,USER是用户与其所在组之间的表,这样写出来的SQL语句就能够正确查询了
我发现我错误的地方是多引入了另一个无关的表,就是说from里面多出来另一个表,一开始我以为没有差别,后来才发现多一个那样的表,同一个查询结果就会多出那个表的节点个数倍。。。
恩,很久没有写过SQL,今天算是复习了一下。很不错~~~~
相关文档:
文章来源:Http://www.simple-talk.com
原文地址:http://www.simple-talk.com/sql/learn-sql-server/managing-transaction-logs-in-sql-server/
原作者:Robert Sheldon
翻译:三晋一枝花
译文原地址:http://prj.souty.cn/Admin/Knowledges/ShowKnowledge.aspx?id=44dbde74-d2c5-41a5-a8e9-375ba7103025
在 SQL Serv ......
返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。
语法
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函数语法中有下列命名参数:
部分 描述
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
Date1 ......
CREATE FUNCTION dbo.UF_GetInvoiceSerials( @bizCode VARCHAR(10))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @ret AS VARCHAR(1000)
SELECT @ret=Coalesce(@ret + ', ','') +
CASE e.ID
  ......
在存储过程或触发器中使用 Transact-SQL 游标的典型过程为:
声明 Transact-SQL 变量包含游标返回的数据。为每个结果集列声明一个变量。声明足够大的变量来保存列返回的值,并声明变量的类型为可从列数据类型隐式转换得到的数据类型。
使用 DECLARE CURSOR 语句将 Transact-SQL 游标与 SELECT 语句相关联。另外,D ......