1
选择 * 从表 1、表 2
在哪里 table1.user_id = table2.id
AND table1.content = 新闻
AND table1.content_id = 1

那行不通。你不能在一个sql语句中有两个“AND”吗?

//托梅克

4

6 回答 6

11

您可能想将“新闻”引用为字符串...您也可能想改用内部联接(效率更高)

SELECT * FROM table1
INNER JOIN table2 ON table1.user_id = table2.id 
WHERE table1.content = 'news' 
AND table1.content_id = 1
于 2009-01-14T20:08:47.650 回答
4

news是什么?某种参数?领域的价值?应该出现在该领域的一个词?您的语法很可能是错误的,请参阅W3Schools WHEREW3Schools AND/OR运算符页面了解更多信息。

于 2009-01-14T20:09:45.137 回答
3

让我用 JOIN 语句为你重写,因为它不再是 1995 年了,你还需要引用新闻

SELECT * FROM table1 t1
inner join table2 t2 on t1.user_id = t2.id
AND t1.content = 'news'
AND t1.content_id = 1
于 2009-01-14T20:11:22.387 回答
1
  • table1 和 table2 是什么样的?你可以粘贴一个创建脚本吗?
  • 强烈建议使用正确的 JOIN 语法:

    select * from table1 inner join table2 on table1.user_id = table2.id ......

  • “table1.content”是什么数据类型?

您绝对可以在 SQL 查询中拥有不止 2 条 AND 语句 - 任何真正支持任何 SQL-xx 标准的数据库都将支持这一点......

于 2009-01-14T20:10:51.343 回答
1

首先让我们从摆脱旧式连接开始,以便将连接和 where 子句清楚地分开,以便更容易理解。

SELECT * FROM table1 t1.
JOIN table2 t2
ON t1.user_id = t2.id
WHERE t1.content = news
AND t1.content_id = 1

现在让我们讨论一下可能是什么问题。首先,您收到什么错误,因为这可能是完全可以接受的语法?问题可能是您没有注意到来自哪个表消息?如果它在两个表中,则可能会出现错误。如果 news 是该列的值,则您希望它是“news”而不是 news。也可能只是没有记录符合您的条件。

此外,使用 select * 是一种不好的做法,并且永远不应该在连接中使用它,因为您至少要返回一个字段两次,这会浪费数据库和网络资源。始终只指定您需要的列。当懒惰的程序员在每个查询中都这样做时,这每天都会浪费大量资源。

于 2009-01-14T20:20:05.537 回答
0

我喜欢 cmartin 的回应。此外,如果需要,您可以使用多个 AND。

于 2009-01-14T20:14:02.817 回答