我有一个用户使用某些数据创建的模板列表(数据类型并不重要)。模板存储在一个表中,其private
字段为enum
,其值为0,1表示false / true。
主要思想是每个用户都可以创建一个只能由他看到的私有模板,所有其他模板都可以看到所有系统用户。所以我的sql应该是这样的:
SELECT
`templates`.`id`,
`templates`.`name`,
`templates`.`description`,
`templates`.`datetime`,
`users`.`username`
FROM
(`templates`)
JOIN `users` ON `templates`.`user_id` = `users`.`id`
-- WHERE
-- `users`.`id` <> 1 AND `templates`.`private` = 0
ORDER BY
`templates`.`datetime` DESC
LIMIT 5
在where
中我说我需要除私人以外的所有行,而不是我的身份证,但它会错过我自己的私人模板......
答案 0 :(得分:1)
似乎没有理由加入users表。您可以使用
获取所有公开和自己的私人模板SELECT
`templates`.`id`,
`templates`.`name`,
`templates`.`description`,
`templates`.`datetime`,
FROM
`templates`
WHERE
`templates`.`user_id` = 42 OR `templates`.`private` = 0
我假设当前用户的id为42,在构造查询时用实际值替换它。