0

我有一个用户使用一些数据创建的模板列表(数据类型并不重要)。模板存储在一个表中,该表的字段类型privateenum0、1,表示假/真。主要思想是每个用户可以创建一个只有他才能看到的私有模板,所有其他模板都可以看到所有系统用户。所以我的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我说我需要除私人以外的所有行,其中不是我的 ID,但它错过了我自己的私人模板......

4

1 回答 1

1

似乎没有理由加入 users 表。您可以通过以下方式获取所有公共和您自己的私人模板

SELECT
    `templates`.`id`,
    `templates`.`name`,
    `templates`.`description`,
    `templates`.`datetime`,
FROM
    `templates`
WHERE
    `templates`.`user_id` = 42 OR `templates`.`private` = 0

我假设当前用户的 id 为 42,在构造查询时将其替换为实际值。

于 2013-08-28T21:28:12.993 回答