gpt4 book ai didi

mysql - SQL 使用任意 IN 子句选择所有内容

转载 作者:行者123 更新时间:2023-11-29 01:23:27 25 4
gpt4 key购买 nike

这听起来很傻,但请相信我,这是出于好的(即过度设计的)原因。

是否可以使用 IN 子句编写一个 SQL 查询,该查询在不知道该表的任何信息的情况下选择该表中的所有内容?请记住,这意味着您不能使用引用该表的子查询。

换句话说,我想找到一个语句来替换以下查询中的“SOMETHING”:

SELECT * FROM table_a WHERE table_a.id IN (SOMETHING)

因此结果与:

SELECT * FROM table_a

除了改变“SOMETHING”的值之外什么都不做


为了满足好奇心,我将分享这个问题的原因。

1) 我有一个 FactoryObject 抽象类,它授予所有扩展它的模型一些光荣的 factory method使用两个魔法 template methods : getData() 和 load()

2) 模型必须实现模板方法。 getData 是一个静态方法,它接受 ID 约束,从数据库中提取行,并返回一组关联数组。 load 不是静态的,接受关联数组,并根据该数组填充对象。

3) FactoryObject 的非抽象部分实现了一个getObject() 和一个getObjects() 方法。这些调用 getData,创建对象,并加载()来自 getData 的数组响应以创建和返回填充的对象。

getObjects() 需要 ID 约束作为输入,可以是列表的形式,也可以是子查询的形式,然后传递给 getData()。我希望能够不传入 ID 约束来获取所有对象。

问题是只有模型知道他们的表格。 getObjects() 是在更高级别实现的,因此它不知道要传递给 getData() 什么,除非 IN 有一个通用的“返回所有内容”子句。

还有其他解决方案。我可以修改 API 以要求 getData 接受特殊参数并返回所有内容,或者我可以在模型级别实现静态 getAll[ModelName]s() 方法,该方法调用:

static function getAllModelObjects() {
return getObjects("select [model].id from [model]");
}

这是合理的,无论如何可能适合架构,但我很好奇所以我想我会问!

最佳答案

适用于 SQL Server:

SELECT * FROM table_a WHERE table_a.id IN (table_a.id)

关于mysql - SQL 使用任意 IN 子句选择所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10491731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com